我在使用Java的Iterator (LinkedList.iterator())对象时遇到了问题。在循环中,我需要将一个迭代器对象从某个位置移动到列表末尾。
例如:
final Iterator<Transition> it = this.transitions.iterator();
while(it.hasNext()) {
final Transition object = it.next();
if(object.id == 3){
// Move to end of this.transitions list
// without throw ConcurrentModificationException
}
}
由于某些原因,我无法克隆这些转换。这是可能的,还是我真的需要使用克隆方法?
编辑: 目前,我这样做:
it.remove();
this.transitions.add(object);
但问题就在这第二行。我无法添加项目,因为我正在同一个对象的迭代器内部。 :(
this.transitions
而不会有任何问题,因为你并没有直接在它上面进行循环,而是使用了一个Iterator
,它基本上是this.transitions
的克隆。 - Jonahit.remove()
在删除时完美运作。但问题在于使用this.transitions.add(object)
方法将对象添加到列表末尾。 - David RodriguesConcurrentModificationException
异常,因为this.transition
被“锁定”以进行修改。 - David Rodrigues