将更新的arraylist添加到arraylist的arraylist中会替换以前的值

时间:2016-03-27 03:14:43

标签: java collections

Rx.min.js

为什么输出: [[1,2],[1,2]]应该是[[1],[1,2]]

1 个答案:

答案 0 :(得分:0)

由于您正在修改out的相同引用,因此它会在任何地方反映出来。为了冻结特定点的列表,您需要创建它的克隆并添加该新列表。

public static void main(String[] args) {
ArrayList<ArrayList<Integer>> result = new ArrayList<ArrayList<Integer>>();
ArrayList<Integer> out = new ArrayList<Integer>(); 
for(int i =1;i<=2;i++) {
    out.add(i);
    ArrayList<Integer> freeze = new ArrayList<Integer>(out);
    result.add(freeze);
}

System.out.println(result.toString());
}