【问题标题】:difference on list.add() AND list.add(new ArrayList<>())? [duplicate]list.add() 和 list.add(new ArrayList<>()) 的区别? [复制]
【发布时间】:2018-02-06 08:12:00
【问题描述】:

以下代码:

List<List<Integer>> res = new ArrayList<>();
List<Integer> row = new ArrayList<>();

for (int i = 1; i <= 3; i++) {
  row.add(i);
  res.add(row);
}

分辨率:[[1,2,3],[1,2,3],[1,2,3]]

这样写的:

for (int i = 1; i <= 3; i++) {
  row.add(i);
  res.add(new ArrayList<>(row));
}

分辨率:[[1],[1,2],[1,2,3]]

【问题讨论】:

    标签: java list object arraylist


    【解决方案1】:

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

    在第二种情况下,您创建了 5 个对象:res、一个工作区 row,以及在 3 个不同的时间点生成的 row 的 3 个副本。 3个副本添加到res

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-10-19
      • 1970-01-01
      • 1970-01-01
      • 2015-12-07
      • 2011-06-03
      • 2013-12-20
      • 2011-08-10
      • 1970-01-01
      相关资源
      最近更新 更多