问题
java.util.ConcurrentModificationExceptioni ConcurrentModificationException null
原因
在Java中对集合使用增强for循环时,一旦对集合进行增删操作,在遍历时会引起java.util.ConcurrentModificationException: null异常
分析
在官方文档中ConcurrentModificationException的介绍如下:
public class ConcurrentModificationException extends RuntimeException
某个线程在 Collection 上进行遍历时,通常不允许其他线程修改该 Collection,这会导致遍历的结果是不确定的。当方法检测到集合发生并发修改时,不允许这种修改,抛出此异常。
在执行增删操作以后,集合的expectedModCount和modCount的值不一致,这两个变量的作用都是记录修改次数的,二者不相等,就会抛错。
expectedModCount:表示对ArrayList修改次数的期望值,它的初始值为modCount。
modCount是AbstractList类中的一个成员变量。
解决方式
将循环里得修改移到外部
原版代码
将此处的操作单独放在一个方法内,在for循环结束后去执行(代码略)