Java 如何在二维arrayList中设置特定索引

Java 如何在二维arrayList中设置特定索引,java,arraylist,Java,Arraylist,我有以下几点 ArrayList<ArrayList<Integer>> row = new ArrayList<ArrayList<Integer>>(); ArrayList<Integer> column = new ArrayList<Integer>(); for(int i = 0; i < 12; i++) { column.add(0); } for(int j=0; j < 12 ; j

我有以下几点

ArrayList<ArrayList<Integer>> row = new ArrayList<ArrayList<Integer>>();
ArrayList<Integer> column = new ArrayList<Integer>();
for(int i = 0; i < 12; i++) {
    column.add(0);
}
for(int j=0; j < 12 ; j++) {
    row.add(column);
}
我想要的是替换arrayList中的特定索引。假设第三个索引的第二个数组列表带有9

row.get(2).set(3, 9);

但上面用9代替了整个列。如何在不影响其他行的情况下将arrayList设置为特定的。

这是因为添加相同的
arrayList实例的次数与添加列的次数相同,因此需要先创建副本,然后再创建副本,否则所有列都会受到修改的影响:

for(int j=0; j < 12 ; j++) {
    row.add(new ArrayList<>(column));
}
for(int j=0;j<12;j++){
添加(新的ArrayList(column));
}

这是因为添加相同的
ArrayList实例的次数与添加列的次数相同,因此需要先创建副本,然后再创建副本,否则所有列都会受到修改的影响:

for(int j=0; j < 12 ; j++) {
    row.add(new ArrayList<>(column));
}
for(int j=0;j<12;j++){
添加(新的ArrayList(column));
}

您当前添加了12次相同的精确列,但您应该添加12个不同的列,所有列最初的形状都相同:

ArrayList<ArrayList<Integer>> row = new ArrayList<ArrayList<Integer>>();

for(int j=0; j < 12 ; j++) {
    ArrayList<Integer> column = new ArrayList<Integer>();
    for(int i = 0; i < 12; i++) {
        column.add(0);
    }
    row.add(column);
}
ArrayList行=新建ArrayList();
对于(int j=0;j<12;j++){
ArrayList column=新的ArrayList();
对于(int i=0;i<12;i++){
列。添加(0);
}
行。添加(列);
}

您当前添加了12次相同的精确列,但您应该添加12个不同的列,所有列最初的形状都相同:

ArrayList<ArrayList<Integer>> row = new ArrayList<ArrayList<Integer>>();

for(int j=0; j < 12 ; j++) {
    ArrayList<Integer> column = new ArrayList<Integer>();
    for(int i = 0; i < 12; i++) {
        column.add(0);
    }
    row.add(column);
}
ArrayList行=新建ArrayList();
对于(int j=0;j<12;j++){
ArrayList column=新的ArrayList();
对于(int i=0;i<12;i++){
列。添加(0);
}
行。添加(列);
}

它不替换所有值,只替换一个值。您的问题是
列表的所有12个元素都引用了相同的列列表

您需要为每一行创建一个新的列列表

此外,索引是从零开始的,所以要设置第三个索引的第二个arrayList,需要指定索引1和2,而不是2和3


如果您知道矩阵的确切大小,则应使用常规数组,而不是
ArrayList

它不替换所有值,只替换一个值。您的问题是
列表的所有12个元素都引用了相同的列列表

您需要为每一行创建一个新的列列表

此外,索引是从零开始的,所以要设置第三个索引的第二个arrayList,需要指定索引1和2,而不是2和3


如果您知道矩阵的确切大小,则应使用常规数组,而不是
ArrayList

将同一列添加12次。每行添加一次。如果将同一列添加12次,则为12x12。对每行添加“是”。它将是12x12