[英]Concurrent Modification Exception with ArrayList
我对ConcurrentModificationException
有问题。
我有一个定义的Complex
类的ArrayList
。 我添加了两个Complex
es,并尝试为每个循环执行a ,但是得到了ConcurrentModificationException
。 但是,当我删除该行时,没有任何错误。 我需要那些初始点(1,0)
(-1,0)
来计算,我将在以后需要点。
for (Iterator<Complex> num = dots.iterator(); num.hasNext();) {
// ConcurrentModificationException
Complex aComplex = num.next();
// clone it and clear
temp.add(new Complex(aComplex));
dots.clear();
}
迭代时不能修改集合。 如果您要移动dots.clear(); 和temp.clear()在迭代之外; 它会解决的。 如果需要,可以在需要清除这些集合时创建一个标志。 迭代结束后,您可以清除它们。
除非迭代器本身具有在迭代器本身上定义的语义( remove
方法),否则大多数迭代器实现均不允许修改基础结构。
因此,在遍历结构的同时清除结构的代码的所有部分中,您将获得ConcurrentModificationException
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.