gpt4 book ai didi

java - 如何在java中迭代Set并向其中添加元素?

转载 作者:行者123 更新时间:2023-12-02 03:24:07 24 4
gpt4 key购买 nike

我想迭代一个 Set,如果满足某些条件,我想向其中添加元素。当我这样做时,我收到“ConcurrentModificationException”。当我寻找答案时,我发现在 listIterator 的情况下,我们有 add() 和 remove() 方法,但我不能使用列表,因为我还必须处理重复项。

请提出一种实现此目的的方法。

编辑:

int[] A = {1,2,3,4,5,10,6,7,9};
Set<Integer> s = new HashSet<>();
s.add(1);
Iterator i = s.iterator();
while(i.hasNext()){
int temp = i.next();
int x = next element of array A;
if(x%2==0){
s.add(temp*x);
}
}

但它抛出 ConcurrentModificationException。

最佳答案

How to iterate over Set and add elements to it in java?

这是不可能的。当然,不能使用 HashSetTreeSet。您可能需要找到一种不依赖于此的替代方法来编写算法。

正常的解决方案是创建一个临时列表,向该列表添加元素,然后在完成迭代后使用 addAll 将列表元素添加到集合中。但这在这里不起作用,因为您似乎希望迭代器看到您添加的新元素。

第二种方法是使用 ConcurrentHashMapCollections::newSetFromMap 而不是 HashSet。迭代并发集合不会给出 ConcurrentModificationException。然而,不利的一面是,不能保证迭代器会看到迭代期间添加的所有元素。因此,这对于您的示例可能不起作用(可靠)。

关于java - 如何在java中迭代Set并向其中添加元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56914804/

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