方法addAll(int index, Collection<? extends E> c)和add(E e)返回一个boolean,通知已成功添加元素。另一方面,add(int index, E element)并非如此。
为什么会这样呢?我如何才能知道元素是否可以添加?
发布于 2013-03-17 12:02:14
add(E)是Collection的成员。对于某些类型的集合--尤其是保证唯一性的Set --有时添加元素可能会以一种意料之中的方式“失败”,因为该元素已经在集合中了。在这种情况下,布尔返回值很有用。
另一方面,add(int, E)是List的成员,以这种方式向列表添加元素永远不会失败--根据定义,List可以包含重复的元素。
addAll(int, Collection<E>)的难度要大一些。它是List的成员,所以根据定义,添加的内容不会被拒绝。Javadoc表示“如果该列表因调用而改变”,则返回true。我猜想如果参数是一个空集合,它可能会返回false。这似乎不是很有用。
但请注意,在Collection中有一个addAll(Collection<E>),当所有添加的元素都是重复的,并且集合是一个Set时,它可以返回false。因此,我假设List方法返回boolean,因为Collection方法返回--出于对称考虑,而不是出于任何实际需要。
https://stackoverflow.com/questions/15457372
复制相似问题