簡體   English   中英

創建列表列表

[英]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定義為ObjectsObject[]的數組,其大小為行數,並通過執行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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM