当前位置: 首页 > 知识库问答 >
问题:

为什么list.add(E)返回boolean而list.add(int,E)返回void?

齐迪
2023-03-14

查看javadoc,我看到ArrayList有一个重载的add方法:

公共布尔加法(E E)

将指定的元素追加到此列表的末尾。

所以我去了收藏。添加(E):

布尔加法

确保此集合包含指定的元素(可选操作)。如果此集合由于调用而更改,则返回true。(如果此集合不允许重复并且已包含指定的元素,则返回false。)

public void add(E e){
    if(e is not in set){
        add e;
    }
}

这样,如果e在集合中,则不采取任何操作。为什么返回boolean而不是void方法更好呢?

共有1个答案

庄弘业
2023-03-14

collection.add是一个非常通用的方法(不是Java泛型的意思,而是广泛适用的意思)。因此,他们想要一个可以普遍应用的返回值。

有些类(如arraylist)总是接受元素,因此总是返回true。您说得对,在这些情况下,返回类型void也是一样好的。

但其他元素(如set)有时不允许添加元素。在set的情况下,如果equal元素已经存在,就会发生这种情况。知道这一点通常是有帮助的。另一个例子是有界集合(它只能容纳一定数量的元素)。

if (!set.contains(item)) {
    set.add(item);
    itemWasAdded(item);
}
if (set.add(item)) {
    itemWasAdded(item);
}
 类似资料:
  • 问题内容: 查看javadoc,我看到ArrayList有一个重载的add方法: public boolean add(E e) 将指定的元素追加到此列表的末尾。 和 public void add(int index,E元素) 将指定的元素插入此列表中的指定位置。将当前在该位置的元素(如果有)和任何后续元素右移(将其索引添加一个)。 我注意到第一个返回了一个,而第二个返回了一个。事实证明,第一个

  • 问题内容: 为什么不: 代替: 获得唯一哈希码的更高机会? 问题答案: 因为数组的最大长度为。 由于的主要用途是确定将对象插入/ 的后备数组中的哪个插槽,因此hashcode> 将无法存储在该数组中。

  • 为什么numeric_limits::min返回一个负值为int,但正值为例如浮动和双? 输出: 参考文献: 返回可由数字类型T表示的最小有限值。 对于具有反规范化的浮点类型,min返回最小的正规范化值。请注意,这种行为可能是意外的,特别是与整型类型的min行为相比。要查找没有值小于它的值,请使用。 min仅对有界类型和无界无符号类型有意义,也就是说,表示无穷多个负值的类型没有意义的最小值。

  • 问题内容: 我正在使用该方法。我从调试中知道不是。我真的很困惑,谢谢。 问题答案: 您需要初始化一个List才能获取。

  • 问题内容: 我尝试将对象添加到实例,但会引发。有人知道为什么吗? 我的Java代码: 错误信息: 问题答案: 并非每个实现都支持该方法。 一个常见的示例是通过以下方式List返回的:它被记录为不支持任何结构修改(即,删除或添加元素)(强调我的意思): 返回由指定数组支持的固定大小的列表。 即使这不是List你要修改的特定内容,答案仍然适用于List不可变或仅允许某些选定更改的其他实现。 你可以通过

  • 问题内容: 我已经能够验证结果是否为。但是,它不返回列表。为什么? 问题答案: 对列表进行适当排序,即不返回新列表。写吧