增强for循环中为什么不可以进行add和remove操作

励志当最强课代表的我来给大家总结总结👍👍👍
增强for循环中为什么不可以进行add和remove操作
视频内容:
1️⃣什么是增强for循环✍️
2️⃣增强for循环中进行add和remove操作的时候发生了什么📄
视频内容:
1️⃣什么是增强for循环✍️
- 增强 for 循环其实就是对集合的一种简洁的便利方式。
- 如上图代码所示,它其实就是一种语法糖。
- 将上述的增强 for 循环代码进行编译以后,这里变成了迭代器遍历的一种方式。
- 以 AD D 来举例,可以看到在增强 for 循环中进行 AD D 操作的话,它抛出了如上图所示的一个异常。接下来就具体分析一下,这里直接就编译后的迭代器的这种便利方式来追代码。
- 直接找到迭代器接口对应的实现类 arrival list 这里直接返回了这样一个对象,它继承了迭代器,并且实现了迭代器当中的一些方法。
00:20

2️⃣增强for循环中进行add和remove操作的时候发生了什么📄
- 在 AD D 操作的时候,对这个 mod count 进行了加加。同样是找到对应的迭代器的实现类。可以看到 has next 方法实现很简单,就判断是否有元素。记主要来看它的 next 方法,可以看到这里有一个检查函数,点到检查函数里面可以看到这里它对这个 mode count 和 exact mode count 进行了判断,不相等的抛出一个异常。
- 用 mode count 去初始化了一下,所以在这里它们的初始化的值都是0。 AD 操作以后,它会将 mod count 的值进行加1,这样的话在 next 中它就会对这个两个值进行一个判断,结果发现一个是0,一个是1,两个值不相等。
- 所以就抛出了下面的这个异常,这就是为什么在增强 for 循环中不可以进行 AD 或者 remove 操作的原因了。
01:34
