Java 抽象列表<;E>;-add(int索引、E元素)、add(E)等返回类型之间的差异?
方法Java 抽象列表<;E>;-add(int索引、E元素)、add(E)等返回类型之间的差异?,java,Java,方法addAll(int index,Collectionadd(E)是Collection的成员。对于某些类型的集合--Set,它保证了唯一性,特别是--有时添加元素可能“失败”因为元素已经在集合中,所以以非surprising方式返回。在这种情况下,布尔返回值很有用 另一方面,add(int,E)是列表的成员,向列表中添加一个元素将永远不会失败,按照定义,列表可以包含重复的元素 addAll(int,Collection)有点难。它是List的成员,因此根据定义,添加不会被拒绝。Javado
addAll(int index,Collectionadd(E)
是Collection
的成员。对于某些类型的集合--Set
,它保证了唯一性,特别是--有时添加元素可能“失败”因为元素已经在集合中,所以以非surprising方式返回。在这种情况下,布尔返回值很有用
另一方面,add(int,E)
是列表
的成员,向列表中添加一个元素将永远不会失败,按照定义,列表
可以包含重复的元素
addAll(int,Collection)
有点难。它是List
的成员,因此根据定义,添加不会被拒绝。Javadoc说,如果调用导致列表更改,则返回true。我想如果参数是空集合,则可能返回false。这似乎不是很有用
但是请注意,有一个addAll(集合)
在集合
中,当所有添加的元素都是重复的并且集合是一个集合时,它可以返回false
。因此我想象列表
方法返回布尔值
,因为集合
方法是对称的,而不是出于任何实际需要。你必须问谁曾经写过关于他们为什么选择这样做的代码。@Makoto-请看下面的答案。是的。但是addAll(int,Collection)
有点奇怪。它可能返回void而不是boolean。在我输入所有内容之前,您已经评论过:)