我收到以下异常
Exception in thread "main" java.util.ConcurrentModificationException
at java.util.TreeMap$PrivateEntryIterator.nextEntry(Unknown Source)
at java.util.TreeMap$KeyIterator.next(Unknown Source)
at Types$AdjList.makeConnected(Types.java:281)
at Main.main(Main.java:56)
执行以下代码时
public void makeConnected() {
TreeSet<Node> exploredNodes = new TreeSet<Node>();
TreeSet<Node> unexploredNodes = new TreeSet<Node>();
for (Node n : unexploredNodes) {
...
exploredNodes.add(n);
unexploredNodes.remove(n);
...
}
我没有像在HashMap中那样使用迭代器,但需要使用可能会根据某些条件增长或减少的Set。 我会接受并指出所有答案。期待如何回答如何解决ConcurrentModificationException的这个问题 谢谢, 索姆纳特
答案 0 :(得分:4)
for循环内部使用迭代器,而不是使用迭代器删除元素。因此,问题。使用iterator的remove方法如下:
for (Iterator iterator = exploredNodes.iterator(); iterator.hasNext();) {
Node n = (Node) iterator.next();
unexploredNodes.add(n);
iterator.remove();
}