ArrayList的ArrayList输出

时间:2017-08-01 21:38:16

标签: java arraylist

我试图将一个整数的arraylist放在整数的arraylist的arraylist中。 我试过了。

public class test3{
    public static void main(String[] args) throws IOException{
        String text= null;
        ArrayList<ArrayList<Integer>> outerlist = new ArrayList<ArrayList<Integer>>();
        ArrayList<Integer> innerlist = new ArrayList<>();

        int dept= 17;
        int arrv= 6;
        int[] arr = new int[1000];
        String[] stations = null;    
        FileReader file = new FileReader("test2.txt");
        BufferedReader br = new BufferedReader(file);
        while((text = br.readLine()) != null){
            innerlist.clear();
            stations = text.split(" ");
            //int[] array = Arrays.stream(stations).mapToInt(Integer::parseInt).toArray();

            for(int i = 0 ; i<stations.length ; i++){
                arr[i] = Integer.parseInt(stations[i]);
            }
            for(int j = 0 ; j<stations.length ; j++){
                innerlist.add(arr[j]);
            }
            outerlist.add(innerlist);

        }
        System.out.println(outerlist);
    }
}

它应该输出 [[1,17,3,150,22],[2,6,34,118],[5,22,3,19,6,118,250,7],[10,15,89,14, 33,77,2,101,50,44]]

但输出: [[10,15,89,14,33,77,2,101,50,44],[10,15,89,14,33,77,2,101,50,44],[10,15, 89,14,33,77,2,101,50,44],[10,15,89,14,33,77,2,101,50,44]]

我正在读取的测试文件(test2.txt)包含:

1 17 3 150 22

2 6 34 118

5 22 3 19 6 118 250 7

10 15 89 14 33 77 2 101 50 44

1 个答案:

答案 0 :(得分:2)

只需将innerlist.clear()更改为innerlist = new ArrayList<>();

当您将内部列表添加到外部列表时,它会按内存地址添加,因此,当您更改内部列表时,它会在所有位置发生更改。但是当你innerlist = new ArrayList<>();创建新列表时,内存加法器已更改,但数据未更改