list.add() 和 list.add(new ArrayList<>()) 的区别?

Pet*_*ter 5 java list arraylist object

下面的代码:

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

for (int i = 1; i <= 3; i++) {
  row.add(i);
  res.add(row);
}
Run Code Online (Sandbox Code Playgroud)

资源: [ [1,2,3],[1,2,3] ,[1,2,3]]

是这样写的:

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

资源: [ [1],[1,2] ,[1,2,3]]

AJN*_*eld 5

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

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