相关疑难解决方法(0)

迭代时从HashSet中删除元素

因此,如果我在迭代时尝试从Java HashSet中删除元素,我会得到一个ConcurrentModificationException.从HashSet中删除元素子集的最佳方法是什么,如下例所示?

Set<Integer> set = new HashSet<Integer>();

for(int i = 0; i < 10; i++)
    set.add(i);

// Throws ConcurrentModificationException
for(Integer element : set)
    if(element % 2 == 0)
        set.remove(element);
Run Code Online (Sandbox Code Playgroud)

这是一个解决方案,但我认为它不是很优雅:

Set<Integer> set = new HashSet<Integer>();
Collection<Integer> removeCandidates = new LinkedList<Integer>();

for(int i = 0; i < 10; i++)
    set.add(i);

for(Integer element : set)
    if(element % 2 == 0)
        removeCandidates.add(element);

set.removeAll(removeCandidates);
Run Code Online (Sandbox Code Playgroud)

谢谢!

java iteration hashmap hashset

115
推荐指数
6
解决办法
12万
查看次数

标签 统计

hashmap ×1

hashset ×1

iteration ×1

java ×1