我有这样的事情:
List<int[]> myList= new ArrayList<int[]>();
int tmp[] = new int[size];
for(int i = 0; i<anotherList.size(); i++) {
for (int j = 0; j<size; j++) {
tmp[j] = anotherList.get(i)[j];
}
myList.add(tmp);
}
当我想打印myList时,我看到最后添加的tmp。为什么呢?
for(int i = 0 ; i<myList.size(); i++){
for(int j=0; j<myList.get(i).length; j++){
System.out.print(myList.get(i)[j]+ " ");
}
System.out.println();
}
答案 0 :(得分:3)
您的代码只会创建一个名为&#34; tmp&#34;的数组。你需要在第一个for循环中移动tmp的声明,而不是在for循环之前使用它。
答案 1 :(得分:1)
tmp
数组是在循环外部构造的,因此同一个实例被添加到myList
。要修复,请在每次迭代时向List添加一个不同的实例(例如,在第一个for
循环内创建数组)