【发布时间】:2011-09-13 01:59:25
【问题描述】:
我正在寻找一种针对搜索操作优化的数据结构(在 Java 标准库中)。我必须对其进行多次迭代,控制每个元素并在特殊情况下将其删除。我使用过 HashMap,但总是出现以下错误:
for (Edge e : edges) {
if (special case)
edges.remove(e);
}
java.util.ConcurrentModificationException
at java.util.HashMap$HashIterator.nextEntry(HashMap.java:810)
at java.util.HashMap$KeyIterator.next(HashMap.java:845)
at package.name.TFinder.nN(TFinder.java:83)
at package.name.TFinder.fIT(TFinder.java:56)
at package.name.Main.main(Main.java:215)
【问题讨论】:
-
你应该使用 Iterator.remove() 来避免这个错误。
-
按照@Peter 所说的去做,如果您使用多个线程,请使用download.oracle.com/javase/6/docs/api/java/util/concurrent/…。
-
Iterator.remove()?我像这样迭代:for(Edge e: edges)... 我用 edge.remove(e) 尝试过。
标签: java optimization search hashmap standard-library