我的列表中只有最后添加的数组

时间:2015-05-26 17:28:45

标签: java arrays list loops

我有这样的事情:

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();           
    }   

2 个答案:

答案 0 :(得分:3)

您的代码只会创建一个名为&#34; tmp&#34;的数组。你需要在第一个for循环中移动tmp的声明,而不是在for循环之前使用它。

答案 1 :(得分:1)

tmp数组是在循环外部构造的,因此同一个实例被添加到myList。要修复,请在每次迭代时向List添加一个不同的实例(例如,在第一个for循环内创建数组)