Java中ConcurrentModificationException异常

遇到的问题

在我们用迭代器遍历List, Set类型的集合过程中,若我们用List, Set类的add, remove方法修改其中的元素,可以通过编译,但在运行时会抛出ConcurrentModificationException异常。
同样地,在增强for循环(for each)中调用List, Set类的add, remove方法也会遇到同样的问题。这是因为增强for循环实际上也是通过迭代器实现的。

解决方法
  1. 对于List类型的遍历,我们可以使用普通for循环,使用循环变量配合get方法遍历,从而避免迭代器Iterator的使用。
  2. 我们也可以使用迭代器Iteratorremove方法,而非集合remove方法。
    while (iter.hasNext()) {
        if (iter.next().equals("Example")) {
            iter.remove();
        }
    }

Upd

Java集合类型继承关系
Figure cited from https://www.jianshu.com/p/25aa92f8d681

发布了8 篇原创文章 · 获赞 2 · 访问量 175

猜你喜欢

转载自blog.csdn.net/ZhifanSk/article/details/104705168
今日推荐