java.util.ConcurrentModificationException - 如何使用迭代器进行删除

标签 java javafx iterator

<分区>

使用以下代码将导致 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

这是当您在使用迭代器时有时会在迭代器外部删除。有人可以告诉我如何使用迭代器删除列表中的所有内容吗?

或者另一种方法来阻止这个错误。

这是我的 list 。

private final ObservableList<myCircle> CircleList = FXCollections.observableArrayList();

最佳答案

只需在 gameOverFunction(); 之后插入一个 break; 即可停止迭代器。

问题是您清除了列表,但迭代器继续运行,并且在下一次调用 next() 时将抛出异常。

关于java.util.ConcurrentModificationException - 如何使用迭代器进行删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42112838/

相关文章:

java - Spring针对包含嵌套不同类型对象的json Body的Bindingresult

python - C++ 中的递归生成器

java - 有没有一种简单的方法来测试某些东西是否为空,如果不是,则用它做一些事情?

java - 重新启动 Swing 应用程序

JavaFX GridPane 对象对齐

java - 我需要在 Netbeans 中进行哪些更改才能构建混合 JavaFX 应用程序?

c++ - 有没有办法为 std::map 中小于给定键的第一个元素找到反向迭代器?

iterator - 如何跳过 Rust 中迭代器的前 n 项?

JavaFX:隐藏 SplitPane 的 slider /分隔线

javafx - 在 JavaFX 中显示带有 ProgressBar 的弹出窗口