2

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

为什么会这样?我如何知道是否可以添加元素?

4

1 回答 1

3

add(E)是 的成员Collection。对于某些类型的集合——Set尤其是保证唯一性的集合——有时添加一个元素可能会以一种不足为奇的方式“失败”,因为该元素已经在集合中。在这种情况下,布尔返回值很有用。

add(int, E)另一方面,它是 的成员List,并且以这种方式将元素添加到列表中永远不会失败 -List根据定义, a 可以包含重复元素。

addAll(int, Collection<E>)有点难。它是 的成员List,因此根据定义,添加不会被拒绝。Javadoc 说“如果此列表因调用而更改”,则返回 true。我想如果参数是一个空集合,它可能会返回 false。这似乎不是很有用。

但请注意,有一个addAll(Collection<E>)in ,并且当所有添加的元素都是重复的并且集合是 a 时Collection,它可以返回。所以我想该方法返回是因为该方法确实 - 为了对称,而不是出于任何真正的需要。falseSetListbooleanCollection

于 2013-03-17T04:02:14.037 回答