我写下了以下代码。
ArrayList<int []> l = new ArrayList<>();
int [] temp = new int[2];
int n=1;
for(int i=0;i<10;i++)
{
for(int j=0;j<2;j++)
{
temp[j]=n++;
}
l.add(temp);
}
for(int i=0;i<10;i++)
{
for(int j=0;j<2;j++)
{
System.out.print(l.get(i)[j] + " ");
}
System.out.println();
}
输出:
19 20
19 20
19 20
.
.
19 20
我无法理解为什么输出是这样的。我正在使用临时数组填充列表,每次都会更改。我做错了什么?
答案 0 :(得分:6)
您正在使用对同一数组对象的多个引用填充List
。您必须在循环的每次迭代中创建一个新数组,以便向List
添加元素。
for (int i = 0; i < 10; i++) {
int [] temp = new int[2];
for (int j = 0; j < temp.length; j++) {
temp[j] = n++;
}
l.add(temp);
}