我有这个代码。第一个for是换行,第二个for是填充每一行。对于第一个for,我想从data[]中读取数据,并将其放在不同的行中。
List lista = new ArrayList();
Bean line = new Bean();
int j;
int i;
for (j = 1; j < data.length; j++) {
LinkedHashMap<String, Object> hmap = (LinkedHashMap<String, Object>)data[j];
for (i = 1; i < headers.length; i++) {
line.choosefield(i,headers,hmap);
}
lista.add(line);
}
我基本上只是得到我的数据[]的最后一行(与正确的字段)一遍又一遍地重复。我想我可以这样写
lista.add(line1,2,3...)
我该怎么做,有没有更好的方法?使用JDK谢谢。
bean代码:
public Object getField1() {
return field1;
}
public void setField1(Object field1) {
this.field1 = field1;
}
public Object getField2() {
return field2;
}
public void setField2(Object field2) {
this.field2 = field2;
}
...
public void choosefield(int i, String[] headers, LinkedHashMap<String, Object> hmap){
switch (i) {
case 1:
this.setField1(hmap.get(headers[1]));
break;
...
case 2:
this.setField2(hmap.get(headers[2]));
break;
data是一个包含17个字段的链接hashmap数组
如果你反复看到最后一个元素,我猜你可以试试这个:
for (i = 1; i < headers.length; i++) {
Object obj = line.choosefield(i,headers,hmap);
}
lista.add( obj );
其中obj
应该具有您的chosefield
方法的类型
让我们把这个清除掉。这就是问题所在
List c1;
List c2;
List c3;
... so on to data.length[]
List lista = new ArrayList();
for (int i=0;i<data.length;i++)
{
LinkedHashMap<String, Object> hmap = (LinkedHashMap<String, Object>)data[i];
lista.add(//HOWTO: Add each of the answers?);
}
如何实现这个循环?我读到反射是一种选择。所以如何?