为啥java不要在foreach循环里进行元素的remove/add操作( 二 )

2、假如删除的是“1”的话,第一次循环,执行了remove方法,remove方法会导致size改变(可以看一下remove的源码),第二次循环执行hasNext方法时,hasNext中的cursor != size返回false,不会进入第二次循环,不会执行next方法,因为ConcurrentModificationException是在next方法中抛出的,因此不会抛异常。

■网友
假如这么操作,在每次循环中移除/添加元素,那么在根据数组角标取值的时候是不是会OutOfIndex或者元素不对位?其实可以在循环中添加或者移除元素,不过要特殊处理下,比如移除/添加了一个元素后就跳出去,这样就不会有问题了。
■网友
【为啥java不要在foreach循环里进行元素的remove/add操作】 foreach循环中为什么不要进行remove/add操作 - 丨核桃牛奶 - 博客园


推荐阅读