方法addAll(int index, Collection<? extends E> c)
和add(E e)
返回 boolean
通知元素已成功添加。另一方面,add(int index, E element)
才不是。
为什么会这样?我如何知道是否可以添加该元素?
最佳答案
add(E)
是 Collection
的成员。对于某些类型的集合 -- Set
,这保证了唯一性,特别是 - 有时添加元素可能会以一种毫不奇怪的方式“失败”,因为该元素已经在集合中。在这种情况下, boolean 返回值很有用。
add(int, E)
另一方面,是 List
的成员,并且将元素添加到列表中永远不会以这种方式失败 - a List
根据定义,可以包含重复元素。
addAll(int, Collection<E>)
有点难。它是 List
的成员,因此根据定义,添加内容不会被拒绝。 Javadoc 表示“如果此列表由于调用而发生更改”,则返回 true。我想如果参数是一个空集合,它可能会返回 false。这看起来不太有用。
但请注意,有一个 addAll(Collection<E>)
在Collection
,并且可以返回 false
当所有添加的元素都是重复且集合是 Set
时。所以我想象List
方法返回 boolean
因为Collection
方法确实是为了对称,而不是出于任何实际需要。
关于java - AbstractList<E> - add(int index, E element)、add(E e) 等返回类型之间的区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15457372/