繁体   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