遍历list进行remove操作异常

产生问题:

在对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的操作。

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。