簡體   English   中英

復制矩陣

[英]Copying matrices

我必須復制矩陣並更改新矩陣,但是不想更改初始矩陣。 我用arraylists的arraylist表示它們。 這是我的代碼

ArrayList<ArrayList<Integer>> tempMatrix = new ArrayList<ArrayList<Integer>>();
        for(ArrayList<Integer> row : matrix) {
            for(Integer index : row) {
                tempMatrix.get(row).add(index);
            }
        }

編譯器說,為此目的使用get方法是非法的。 我還能做什么復制?

您可以復制整行,從而省去了很多麻煩:

ArrayList<ArrayList<Integer>> tempMatrix = new ArrayList<ArrayList<Integer>>();
for(ArrayList<Integer> row : matrix) {
    tempMatrix.add(new ArrayList<Integer>(row));
}

嘗試:

  for(ArrayList<Integer> row : matrix) {
        ArrayList<Integer> rowList = new ArrayList<Integer>();
        for(Integer index : row) {
            rowList.add(index);
        }
        tempMatrix.add(rowList);
    }

您需要克隆arraylist:

    ArrayList<ArrayList<Integer>> tempMatrix = new ArrayList<ArrayList<Integer>>();
    for(ArrayList<Integer> row : matrix) {
         tempMatrix.add(row.clone());
    }

如果使用新的Arraylist則確實會有一個新的arraylist但是其中包含的元素將引用作為傳遞給構造函數參數的數組中包含的元素。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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