当前位置: 首页 > 知识库问答 >
问题:

list.add()和list.add(新的ArrayList())的区别?[重复]

宋鸿
2023-03-14

以下代码:

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个答案

乐正远
2023-03-14

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

在第二种情况下,您已经创建了5个对象:res,一个工作区,以及3个副本,它们在3个不同的时间内完成。这3个副本被添加到res

 类似资料:
  • 问题内容: 我正在使用该方法。我从调试中知道不是。我真的很困惑,谢谢。 问题答案: 您需要初始化一个List才能获取。

  • 问题内容: 我尝试将对象添加到实例,但会引发。有人知道为什么吗? 我的Java代码: 错误信息: 问题答案: 并非每个实现都支持该方法。 一个常见的示例是通过以下方式List返回的:它被记录为不支持任何结构修改(即,删除或添加元素)(强调我的意思): 返回由指定数组支持的固定大小的列表。 即使这不是List你要修改的特定内容,答案仍然适用于List不可变或仅允许某些选定更改的其他实现。 你可以通过

  • 查看javadoc,我看到ArrayList有一个重载的add方法: 公共布尔加法(E E) 将指定的元素追加到此列表的末尾。 所以我去了收藏。添加(E): 布尔加法 确保此集合包含指定的元素(可选操作)。如果此集合由于调用而更改,则返回true。(如果此集合不允许重复并且已包含指定的元素,则返回false。) 这样,如果在集合中,则不采取任何操作。为什么返回而不是方法更好呢?

  • 问题内容: 请帮助我了解下面写的两行之间的区别,我知道两者都是有效的,但是我想知道哪一个更好? 和 问题答案: 哪一个更好? 就个人而言,我喜欢使用第一个,因为我认为对我来说更清楚了,但这是您的个人喜好,其他人的确认为这是多余的。 有什么区别? 这两行之间没有什么区别,它们在Java 7中的含义相同(如果您的目标是Java 6,请使用第一个)。 [编辑]: 同样,正如Elliott Frisch指

  • 问题内容: 查看javadoc,我看到ArrayList有一个重载的add方法: public boolean add(E e) 将指定的元素追加到此列表的末尾。 和 public void add(int index,E元素) 将指定的元素插入此列表中的指定位置。将当前在该位置的元素(如果有)和任何后续元素右移(将其索引添加一个)。 我注意到第一个返回了一个,而第二个返回了一个。事实证明,第一个

  • 主要内容:1 ArrayList和Vector的区别是什么,2 Java ArrayList的例子,3 Java Vector的例子1 ArrayList和Vector的区别是什么 ArrayList和Vector都实现List接口,且存储元素都是有序的。 但是,ArrayList和Vector类之间还是很多区别的: ArrayList Vector ArrayList是非同步。(线程不安全) Vector是同步的。(线程安全) 如果元素数量超出其容量,ArrayList将增加当前数组大小的50