【发布时间】:2010-11-09 18:31:08
【问题描述】:
所以,如果我在迭代时尝试从 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);
这是一个解决方案,但我认为它不是很优雅:
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);
谢谢!
【问题讨论】:
标签: java iteration hashmap hashset