List中进行remove操作报并发修改异常
1.为什么会出现下面这个问题?
从上面的异常信息就可以看出,抛出的异常是并发修改异常
,根据报错信息点进去查看源码
这里俩个值比较关键:
modCount: 修改次数
expectedModCount: 期望修改的次数
当我们对list集合进行remove操作的时候 ,modCountd 值会进行加一
上面的例子当中,我们使用的是for循环进行遍历,增强for循环他的底层使用的是迭代器,在进行remove的时候,expectedModCount的值并不会加一,俩个值不小不相等,所以就会抛出上面那个异常
2.如何解决这个问题?
使用迭代器本身提供的删除方法,修改一下上面的例子。
3. 顺便讲讲集合遍历
生成for循环: 输入fori即可自动生成,掌握快捷键也是很有必要的!!
for循环: 缺点: 对于无序集合 for循环无法对其进行遍历
增强for循环
迭代器
java8新特性 Stream流同样也可以实现一个过滤的效果