0
在下面的示例中,我將元素添加到普通的ArrayList,然後添加到自定義的ArrayList。雖然前者正如預期的那樣很好地將每個元素添加到ArrayList,但後者似乎只是覆蓋了添加的元素。將元素添加到標準與自定義ArrayList
有人可以解釋一下這裏發生了什麼,以及如何解決它?
package jExample;
import java.util.ArrayList;
public class ForLoopArrayList {
public static void main(String[] args) {
// customized ArrayList
ArrayList<CDatabase> box = new ArrayList<>();
// standard ArrayList
ArrayList<String> var1 = new ArrayList<>();
ArrayList<String> var2 = new ArrayList<>();
CDatabase recBox = new CDatabase();
for(int i = 0; i < 9; i++){
// populating customized ArrayList
recBox.var1 = i * 1.1;
recBox.var2 = i * 11.;
box.add(recBox);
// populating standard ArrayList
var1.add(Double.toString(i * 1.1));
var2.add(Double.toString(i * 11.));
}
for(int i = 0; i < var1.size(); i++){
CDatabase test = box.get(i);
System.out.println(var1.get(i) + " " + var2.get(i) + " " + test.var1);
}
System.out.println(var1.size());
System.out.println(box.size());
}
}
使用下面的CDatabase類:通過移動
package jExample;
public class CDatabase {
public double var1;
public double var2;
}
您不斷覆蓋您的CDatabase對象,每次嘗試創建一個新對象。 – Ceelos
[爲什麼我的ArrayList包含添加到列表中的最後一項的N個副本?](http://stackoverflow.com/questions/19843506/why-does-my-arraylist-contain-n-copies-of -'-last-item-added-to-the-list) – Andreas
*僅供參考*'ArrayList'不再是'定製'比'ArrayList '。它們都是標準ArrayList。定製'ArrayList'將意味着改變* list *的工作方式。 –
Andreas