gpt4 book ai didi

java - 为什么只有我们尝试添加的最后一个值重复存储在数组列表中

转载 作者:行者123 更新时间:2023-12-01 23:01:18 24 4
gpt4 key购买 nike

我正在检索单个记录的每个值并将其复制到另一个数组变量中并使用 bean 类设置数组,然后将该 bean 类添加到数组列表中。当我尝试打印时,它仅显示最后一条记录反复

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 {
...
}

最佳答案

最后一个条目会重复存储在数组中,因为您多次存储同一个对象。这是一个非常常见的错误 - 当您编写如下所示的代码时就会发生这种情况:

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 以制作数组的副本。

关于java - 为什么只有我们尝试添加的最后一个值重复存储在数组列表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23338545/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com