如何在不更改列的所有元素的情况下更改 2D ArrayList 的元素
How change an element of 2D ArrayList without change all the elements of the column
我想更改列表中某个元素的值。我必须尝试但我更改了列的所有元素。我该怎么做?
我的代码是这样的:
ArrayList<ArrayList<Integer>> matrix = new ArrayList<ArrayList<Integer>>();
ArrayList<Integer> array = new ArrayList<Integer>();
for(int i = 0; i < 3; ++i){
array.add(0);
}
for(int i = 0; i < 3; ++i){
matrix.add(i,array);
}
showMatrix(matrix);
matrix.get(0).set(0,1);
showMatrix(matrix);
矩阵初始化为:
E/Matrix: [[0, 0, 0], [0, 0, 0], [0, 0, 0]]
矩阵改变位置[0][0]为1:
E/Matrix: [[1, 0, 0], [1, 0, 0], [1, 0, 0]]
如何只更改位置[0][0]?并且不更改 [1][0] 和 [2][0].
谢谢。
问题在于:
for(int i = 0; i < 3; ++i){
matrix.add(i,array);
}
array
在开始时用 ArrayList<Integer> array = new ArrayList<Integer>();
实例化并且永远不会再次实例化。这意味着 array
总是引用同一个对象。所以,永远只有一个副本!
相反,尝试:
for(int i = 0; i < 3; ++i){
matrix.add(i, new ArrayList<>(array));
}
我想更改列表中某个元素的值。我必须尝试但我更改了列的所有元素。我该怎么做?
我的代码是这样的:
ArrayList<ArrayList<Integer>> matrix = new ArrayList<ArrayList<Integer>>();
ArrayList<Integer> array = new ArrayList<Integer>();
for(int i = 0; i < 3; ++i){
array.add(0);
}
for(int i = 0; i < 3; ++i){
matrix.add(i,array);
}
showMatrix(matrix);
matrix.get(0).set(0,1);
showMatrix(matrix);
矩阵初始化为:
E/Matrix: [[0, 0, 0], [0, 0, 0], [0, 0, 0]]
矩阵改变位置[0][0]为1:
E/Matrix: [[1, 0, 0], [1, 0, 0], [1, 0, 0]]
如何只更改位置[0][0]?并且不更改 [1][0] 和 [2][0].
谢谢。
问题在于:
for(int i = 0; i < 3; ++i){
matrix.add(i,array);
}
array
在开始时用 ArrayList<Integer> array = new ArrayList<Integer>();
实例化并且永远不会再次实例化。这意味着 array
总是引用同一个对象。所以,永远只有一个副本!
相反,尝试:
for(int i = 0; i < 3; ++i){
matrix.add(i, new ArrayList<>(array));
}