gpt4 book ai didi

java - addAll() 实现——Java

转载 作者:搜寻专家 更新时间:2023-11-01 04:01:57 28 4
gpt4 key购买 nike

AbstractCollection

addAll()实现如下:

public boolean addAll(Collection<? extends E> c) { 
boolean modified = false;
for (E e : c) if (add(e)) modified = true;
return modified;
}

因此,如果参数中的 c 是一个集合,比如 3 个元素,则可能是前 2 个添加了这些元素中的一个,但由于某些我现在想不起来的原因,没有添加第三个元素。

在这种情况下,addAll() 操作——将所有这 3 个元素添加到底层未执行集合,addAll() 应返回 false。但是,前 2 个元素存在——并且开发人员会期望他们不应该是(?)

HashSet 在其类型为 Collection 的构造函数中使用此 addAll()

因此,开发人员最终可能会得到一个 HashSet 实例当他正在寻找整个 Collection 时,其中包含他 Collection 的一部分。而且这种情况在没有任何警告的情况下发生。

涉及的方法——HashMapput()HashSetadd()看起来很简单--在这些操作过程中似乎不会出现任何问题——但仍然如此。

我是不是漏掉了什么?

最佳答案

Collection#addAll(...) 的契约(Contract)只是说如果集合 (this) 被修改,它会返回 true。它不保证添加将是原子的或完整的。

关于java - addAll() 实现——Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17982604/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com