java.util.ConcurrentModificationException: null异常由for增强循环嵌套增删引起。

问题:

在Java中对集合使用增强for循环时,一旦对集合进行增删操作,在遍历时会引起java.util.ConcurrentModificationException: null异常。

原因:

在官方文档中ConcurrentModificationException的介绍如下:

public class ConcurrentModificationException extends RuntimeException

某个线程在 Collection 上进行遍历时,通常不允许其他线程修改该 Collection,这会导致遍历的结果是不确定的。当方法检测到集合发生并发修改时,不允许这种修改,抛出此异常。

在执行增删操作以后,集合的expectedModCount和modCount的值不一致,这两个变量的作用都是记录修改次数的,二者不相等,就会抛错。

expectedModCount:表示对ArrayList修改次数的期望值,它的初始值为modCount。

modCount是AbstractList类中的一个成员变量。

解决方法:

方法一:使用索引(普通for循环)遍历。
方法二:使用增强for循环遍历,增删操作使用迭代器实现。

-------------------------------------以下无正文-----------------------------------------------------------

注:仅供学习,记录问题和参考,共勉!

转载来源:https://blog.csdn.net/jl08133341/article/details/123128108

猜你喜欢

转载自blog.csdn.net/qq_39715000/article/details/127390692
今日推荐