[英]Creating List of Lists
我想在Java中創建一個列表列表,這是我正在使用的代碼。
public ArrayList<ArrayList<Object>> getRows(){
ArrayList<ArrayList<Object>> listOfRows = new ArrayList<ArrayList<Object>>();
ArrayList<Object> temporalRow = new ArrayList<Object>();
IntNode rowSentinel = newTable.sentinel;
for (int y = 0; y < this.numberOfRows; y++) {
for (int x = 0; x < this.numberOfColumns; x++) {
rowSentinel =rowSentinel.next;
Object rowElement = rowSentinel.arrayCol.get(y);
temporalRow.add(rowElement);
}
rowSentinel = newTable.sentinel;
listOfRows.add(temporalRow);
System.out.print(temporalRow);
System.out.println(Arrays.toString(listOfRows.toArray()));
temporalRow.clear();
}
return listOfRows;
}
但是,當我看到列表的最終列表時,控制台會給我以下輸出:
[oddy1, minino1, libertad1][[oddy1, minino1, libertad1]]
[oddy2, minino2, libertad2][[oddy2, minino2, libertad2], [oddy2, minino2, libertad2]]
[oddy3, minino3, libertad3][[oddy3, minino3, libertad3], [oddy3, minino3, libertad3], [oddy3, minino3, libertad3]]
[[], [], []]
我還嘗試將listOfRows
定義為Objects
, Object[]
的數組,其大小為行數,並通過執行Object[0]
, Object[1]
等添加元素,但我最終獲得了相同的結果。
我想得到一份表格的最終清單
[[oddy1, minino1, libertad1],[oddy2, minino2, libertad2],[oddy3, minino3, libertad3]]
我真的不明白我的代碼是做錯了什么。 任何人都可以幫我這個嗎?
用temporalRow = new ArrayList<Object>()
替換temporalRow.clear()
,應該修復它。 現在, listOfRows
包含對同一對象的引用的三倍,並且之前添加的元素總是被temporalRow.clear()
刪除。
看看下面的代碼
ArrayList<Test> temporalRow = new ArrayList<Test>();
Test t = new Test();
t.i = 5;
temporalRow.add(t);
System.out.println(temporalRow.get(0).i);
t.i = 6;
System.out.println(temporalRow.get(0).i);
class Test {
public int i;
}
上面代碼的輸出是5和6,因為temporalRow
列表包含對象t
的引用,如果該對象在其他地方被修改,那么這些變化顯然會反映在temporalRow
。 你的情況類似。 (提示: temporalRow.clear();
)我想也許你想熟悉深拷貝和淺拷貝的概念。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.