以下代码:
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]]
答案 0 :(得分:3)
在第一种情况下,您只创建了2个对象(两次称为new
)。您已将第二个添加到前3次,导致第二个对象在第一个中出现3次。
在第二种情况下,您创建了5个对象:res
,工作区row
和3个不同时刻的row
副本。这3份副本已添加到res
。