我正在检索单个记录的每个值并将其复制到另一个数组变量并使用bean类设置数组,然后将该bean类添加到arraylist.While我尝试打印它只显示最后一条记录反复
try{
st=con.createStatement();
rs=st.executeQuery("select * from data");
while(rs.next()){
DataBean db=new DataBean();
for(int i=1;i<=tNumber;i++){
a[i]=rs.getFloat(i);
}
db.setArray(a);
al.add(db);
}
} finally {
...
}
答案 0 :(得分:2)
最后一个条目重复存储在数组中,因为您多次存储同一个对象。这是一个非常常见的错误 - 当您编写如下代码时会发生这种错误:
MyObject obj = new MyObject();
List<MyObject> list = new ArrayList<MyObject>();
while (haveMoreEntries()) {
obj.setName(readName());
obj.setAddress(readAddress());
list.add(obj);
}
上面代码的问题是它不断重复添加同一个对象。修复是将构造函数的调用移动到循环中,如下所示:
List<MyObject> list = new ArrayList<MyObject>();
while (haveMoreEntries()) {
MyObject obj = new MyObject();
obj.setName(readName());
obj.setAddress(readAddress());
list.add(obj);
}
在您的情况下,问题是共享数组a
:您创建了一次,然后重复调用db.setArray(a);
。您应该将a
的创建移到while
循环中,或者更好的是,更改db.setArray
以制作数组的副本。
答案 1 :(得分:0)
bean对象必须是本地的。我想在你的情况下,你会把它变成全球性的,这就产生了问题。