在设计程序的过程中,有时会遇到需要在ArrayList中删除某个或某些元素的情况。
一般而言,我们需要遍历List并对其进行remove操作。但如果你使用的遍历方法为for (L i:list)或使用迭代器遍历,且在循环体中使用了List的remove操作,就会出现ConcurrentModificationException异常。
其原因是List中的expectedModCount和modCount在该过程中,经过List.remove操作后值不相等了,而又因为List中有这么一条检测要求两者相等:
故程序会抛出异常。
详细原因分析见Java ConcurrentModificationException异常原因和解决方法_lk小强的博客-CSDN博客_concurrentmodificationexception 因此,为了解决该问题,需要将循环方式改为: