0

我必须复制矩阵并更改新矩阵,但不想更改初始矩阵。我用arraylist 的arraylist 来表示它们。这是我的代码

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

编译器说为此目的使用 get 方法是非法的。我还能做些什么来复制?

4

3 回答 3

2

您可以复制整行,省去很多麻烦:

ArrayList<ArrayList<Integer>> tempMatrix = new ArrayList<ArrayList<Integer>>();
for(ArrayList<Integer> row : matrix) {
    tempMatrix.add(new ArrayList<Integer>(row));
}
于 2013-02-19T07:37:22.800 回答
1

尝试:

  for(ArrayList<Integer> row : matrix) {
        ArrayList<Integer> rowList = new ArrayList<Integer>();
        for(Integer index : row) {
            rowList.add(index);
        }
        tempMatrix.add(rowList);
    }
于 2013-02-19T07:42:39.520 回答
1

您需要克隆数组列表:

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

如果您使用 newArraylist那么您将arraylist确实有一个 new 但它包含的元素将是对作为构造函数参数传递的数组中包含的元素的引用。

于 2013-02-19T07:44:29.037 回答