AbstractList <e> - add(int index,E element),add(E e)等返回类型之间的区别?</e>

时间:2013-03-17 03:56:12

标签: java

方法addAll(int index, Collection<? extends E> c)add(E e)返回boolean以通知已成功添加元素。另一方面,add(int index, E element)没有。

为什么会这样?我怎样才能知道是否可以添加元素?

1 个答案:

答案 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方法确实 - 对称性,而不是出于任何实际需要。