方法addAll(int index, Collection<? extends E> c)
和add(E e)
返回boolean
以通知已成功添加元素。另一方面,add(int index, E element)
没有。
为什么会这样?我怎样才能知道是否可以添加元素?
答案 0 :(得分:3)
add(E)
是Collection
的成员。对于某些类型的集合 - Set
,它保证了唯一性,特别是 - 有时添加元素可能会以一种非常令人惊讶的方式“失败”,因为元素已经在集合中。在这种情况下,布尔返回值很有用。
add(int, E)
是List
的成员,向列表中添加元素永远不会以这种方式失败 - 根据定义,List
可以包含重复的元素。
addAll(int, Collection<E>)
有点困难。它是List
的成员,因此根据定义,不会拒绝添加内容。 Javadoc说如果这个列表因调用而改变,则返回true。我想如果参数是一个空集合,它可能会返回false。这看起来不太有用。
但请注意addAll(Collection<E>)
中有Collection
,当所有添加的元素都是重复且集合为false
时,可以返回Set
。所以我想List
方法返回boolean
因为Collection
方法确实 - 对称性,而不是出于任何实际需要。