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

标签 java

方法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/

相关文章:

java - 如何在 Java webapp 中测试 HttpSessionListener.sessionDestroyed?

java - 在java中使类不可变

java - 使用正则表达式检查 wiki 链接

java - 事务日志库

java - DataOutputStream.write(byte b[], int off, int len) 不抛出异常

java - 从 Java 类型移回 MATLAB 类型

java - 使用 0 到另一个 java 类中的多个对象初始化对象

java - 如何更改Openxava日期组件的日期格式?

java使用两个哈希表比一个更好?

Java动态重定义方法