![](/img/trans.png)
[英]How to create a copy of ArrayList<ArrayList<Arc>> to another ArrayList<ArrayList<Arc>>
[英]How to arraylist to copy another arraylist
使用迭代器,我想将数组添加到另一个数组列表中。 但是在第一个列表的元素添加到第二个列表之后,前一个列表的元素被粉碎。 我如何防止这种情况?
GelirList firsList = new GelirList();
List(GelirList) finalList = new ArrayList<>;
Iterator<DvzGelir> iterator = input.getGelirlist().iterator();
while(iterator.hasNext()){
DvzGelir exList = (DvzGelir) iterator.next()
firstList.setName(exList.getName());
firstList.setNumber(exList.getNumber());
finalList.add(firstList);
}
我期望输出:{eren,123}, {ezel,234},但实际输出是 {eren,123}, {eren,123}
您必须在每次循环迭代中初始化firstList
而不是在循环外声明一次:
while(iterator.hasNext()){
GelirList firstList = new GelirList();
....
}
你必须这样做,否则你总是在编辑相同的参考。
有关 Java 在这方面如何工作的更多信息,我建议阅读另一篇文章: Java 是“按引用传递”还是“按值传递”?
由于GelirList
是引用类型,因此更新相同的数据。 用这个:
while(iterator.hasNext()){
GelirList firstList = new GelirList();
//then the initialization
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.