遍历list进行remove操作异常

2020-07-11  本文已影响0人  IceBear_9f3b

产生问题:

在对list增强for循环进行遍历的时候,如果在不恰当的位置使用了remove,就会产生ConcurrentModificationException异常

产生原因:

java的foreach循环其实就是根据list对象创建一个Iterator迭代对象,然后针对Iterator进行遍历.遍历过程中会调用对应的hasNext和next方法

(1)ArrayList的hasnext和next 方法

   (2)LinkedList的hasnext和next 方法

两种list的iterator 都有一个方法是checkForComodification,目的是校验是否list被修改过。list中有个属性是modCount,记录着操作修改list的属性,如果操作list的add或remove,modCount属性都会进行+1的操作。

如果发生了修改,那么在下一次执行到这一步校验的时候,就会发现两个值不相等,抛出异常。

上一篇下一篇

猜你喜欢

热点阅读