list.add() 和 list.add(new ArrayList<>()) 的区别? [复制]
Posted
技术标签:
【中文标题】list.add() 和 list.add(new ArrayList<>()) 的区别? [复制]【英文标题】:difference on list.add() AND list.add(new ArrayList<>())? [duplicate] 【发布时间】: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]]
【问题讨论】:
【参考方案1】:在第一种情况下,您只创建了 2 个对象(称为 new
两次)。您已将第二个对象添加到前 3 次,导致第二个对象在第一个对象中出现 3 次。
在第二种情况下,您创建了 5 个对象:res
、一个工作区 row
,以及在 3 个不同的时间点生成的 row
的 3 个副本。 3个副本添加到res
。
【讨论】:
以上是关于list.add() 和 list.add(new ArrayList<>()) 的区别? [复制]的主要内容,如果未能解决你的问题,请参考以下文章