0

マトリックスをコピーして新しいマトリックスを変更する必要がありますが、最初のマトリックスを変更したくありません。私はそれらを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メソッドを使用することは違法であると言っています。コピーするために他に何ができますか?

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<ArrayList<Integer>> tempMatrix = new ArrayList<ArrayList<Integer>>();
    for(ArrayList<Integer> row : matrix) {
         tempMatrix.add(row.clone());
    }

new を使用すると、確かArraylistに new になりますarraylistが、そこに含まれる要素は、コンストラクター引数として渡される配列に含まれる要素への参照になります。

于 2013-02-19T07:44:29.037 に答える