欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

ConcurrentModificationException异常分析解决

程序员文章站 2022-04-18 17:18:32
...

很多次遇到ConcurrentModificationException这个异常了,今天记录一下。

起因:使用for(a b:c)循环的时候或者使用Iterator迭代器遍历集合的时候,在其中进行了增删操作。(for循环本质上也是使用Iterator迭代器进行循环)

因为Iterator内部实现中有专门一个值expectedModCount 记录集合长度,进行遍历,当你在循环中执行了增删长度,导致记录长度与集合长度不同的时候,就会抛出ConcurrentModificationException异常,这个异常意在循环中保护集合的数据。

解决方法:使用迭代器的时候增删操作同时执行迭代器的值增减操作

1                 iterator.remove();

实现两边值得统一

还有就是用另外一个集合记录需要增减的数据,等待循环结束再进行增删操作。