以下代码:
List<List<Integer>> res = new ArrayList<>();
List<Integer> row = new ArrayList<>();
for (int i = 1; i <= 3; i++) {
row.add(i);
res.add(row);
}
res:[1,2,3,1,2,3,1,2,3]
这样写道:
for (int i = 1; i <= 3; i++) {
row.add(i);
res.add(new ArrayList<>(row));
}
res:[1,1,2,1,2,3]
发布于 2017-08-29 01:44:52
在第一种情况下,您只创建了2个对象(称为new
两次)。在前3次中添加了第二次,导致第二次对象在第一次中出现3次。
在第二个例子中,您已经创建了5个对象:res
,一个工作区row
,以及3个row
副本,占用了3个不同的时刻。这3个副本被添加到res
中。
https://stackoverflow.com/questions/45929473
复制相似问题