ConcurrentModificationException异常分析解决
程序员文章站
2022-04-18 17:18:32
...
很多次遇到ConcurrentModificationException这个异常了,今天记录一下。
起因:使用for(a b:c)循环的时候或者使用Iterator迭代器遍历集合的时候,在其中进行了增删操作。(for循环本质上也是使用Iterator迭代器进行循环)
因为Iterator内部实现中有专门一个值expectedModCount 记录集合长度,进行遍历,当你在循环中执行了增删长度,导致记录长度与集合长度不同的时候,就会抛出ConcurrentModificationException异常,这个异常意在循环中保护集合的数据。
解决方法:使用迭代器的时候增删操作同时执行迭代器的值增减操作
1 iterator.remove();
实现两边值得统一
还有就是用另外一个集合记录需要增减的数据,等待循环结束再进行增删操作。