原文:difference on list.add() AND list.add(new 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]]
//只创建了两个对象,res和row,最后添加进res的是三个同样的对象row的引用。
//第二种情况:
for (int i = 1; i <= 3; i++) {
row.add(i);
res.add(new ArrayList<>(row));
}
//结果:res: [[1],[1,2],[1,2,3]]
//创建了5个对象,res,row以及row的三个不同时刻的拷贝。