如何在不更改列的所有元素的情况下更改 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));
}