使用以下代码将生成java.util.ConcurrentModificationException
final AnimationTimer timer = new AnimationTimer() {
@Override
public void handle(long timestamp) {
for (ListIterator<myCircle> List = CircleList.listIterator(); List.hasNext(); ) {
myCirle check = List.next();
if (CheckCollisionFunction(check) == true) {
this.stop();
CircleList.clear();
gameOverFunction();
}
}
}
}
所以我使用迭代器来检查我的圈子是否与我的玩家圈子发生碰撞。
当我清除列表时:
CircleList.clear();
我得到了例外。
java.util.ConcurrentModificationException
使用迭代器时,有时会在迭代器之外删除。有人可以告诉我如何使用迭代器删除列表中的所有内容吗?
或另一种阻止此错误的方法。
这是我的清单。
private final ObservableList<myCircle> CircleList = FXCollections.observableArrayList();
答案 0 :(得分:3)
只需在break;
之后插入gameOverFunction();
即可停止迭代器。
问题是您清除了列表,但迭代器仍在继续,并且在下一次next()
调用时将抛出异常。