list.add()AND list.add(new ArrayList<>())上的差异?

时间:2017-08-29 01:37:34

标签: java list object arraylist

以下代码:

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]]

1 个答案:

答案 0 :(得分:3)

在第一种情况下,您只创建了2个对象(两次称为new)。您已将第二个添加到前3次,导致第二个对象在第一个中出现3次。

在第二种情况下,您创建了5个对象:res,工作区row和3个不同时刻的row副本。这3份副本已添加到res