gpt4 book ai didi

java - 是否有任何数据结构没有重复项,但可以在迭代时添加元素?

转载 作者:行者123 更新时间:2023-12-01 16:28:41 25 4
gpt4 key购买 nike

我知道一个集合没有重复项,但问题是我无法在使用迭代器或每个循环对其进行迭代时向其中添加元素。还有其他办法吗?谢谢。

最佳答案

ConcurrentHashMap类可以用于此目的。例如:

Set<T> set = Collections.newSetFromMap(new ConcurrentHashMap<T, Boolean>());

(您可以将 <T, Boolean> 替换为 <> 并让编译器推断类型。出于说明目的,我如上所述编写了它。)

Collections::newSetFromMap javadoc说:

Returns a set backed by the specified map. The resulting set displays the same ordering, concurrency, and performance characteristics as the backing map. In essence, this factory method provides a Set implementation corresponding to any Map implementation.

ConcurrentHashMap允许同时迭代和更新,Set 也是如此。如上所述制作。问题是迭代可能看不到迭代时添加或删除的效果。

迭代的并发特性可以从 javadoc 推断出来对于 ConcurrentHashMap .

<小时/>

Is there any other way.

这取决于您的要求,但有一些潜在的方法可以避免该问题。例如,您可以:

  1. 在迭代之前复制该集合,或者
  2. 将新元素添加到另一个新集合中,并将现有元素添加到新集合中 ... 或 while ... 迭代之后。

但是,如果没有并发瓶颈(例如 1.)或行为差异(例如 2.),这些不太可能起作用

关于java - 是否有任何数据结构没有重复项,但可以在迭代时添加元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62097419/

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