增強(qiáng)for循環(huán)中為什么不可以進(jìn)行add和remove操作

勵志當(dāng)最強(qiáng)課代表的我來給大家總結(jié)總結(jié)??????
增強(qiáng)for循環(huán)中為什么不可以進(jìn)行add和remove操作
視頻內(nèi)容:
1??什么是增強(qiáng)for循環(huán)??
2??增強(qiáng)for循環(huán)中進(jìn)行add和remove操作的時候發(fā)生了什么??
視頻內(nèi)容:
1??什么是增強(qiáng)for循環(huán)??
- 增強(qiáng) for 循環(huán)其實就是對集合的一種簡潔的便利方式。
- 如上圖代碼所示,它其實就是一種語法糖。
- 將上述的增強(qiáng) for 循環(huán)代碼進(jìn)行編譯以后,這里變成了迭代器遍歷的一種方式。
- 以 AD D 來舉例,可以看到在增強(qiáng) for 循環(huán)中進(jìn)行 AD D 操作的話,它拋出了如上圖所示的一個異常。接下來就具體分析一下,這里直接就編譯后的迭代器的這種便利方式來追代碼。
- 直接找到迭代器接口對應(yīng)的實現(xiàn)類 arrival list 這里直接返回了這樣一個對象,它繼承了迭代器,并且實現(xiàn)了迭代器當(dāng)中的一些方法。
?
00:20
?
2??增強(qiáng)for循環(huán)中進(jìn)行add和remove操作的時候發(fā)生了什么??
- 在 AD D 操作的時候,對這個 mod count 進(jìn)行了加加。同樣是找到對應(yīng)的迭代器的實現(xiàn)類??梢钥吹?has next 方法實現(xiàn)很簡單,就判斷是否有元素。記主要來看它的 next 方法,可以看到這里有一個檢查函數(shù),點到檢查函數(shù)里面可以看到這里它對這個 mode count 和 exact mode count 進(jìn)行了判斷,不相等的拋出一個異常。
- 用 mode count 去初始化了一下,所以在這里它們的初始化的值都是0。 AD 操作以后,它會將 mod count 的值進(jìn)行加1,這樣的話在 next 中它就會對這個兩個值進(jìn)行一個判斷,結(jié)果發(fā)現(xiàn)一個是0,一個是1,兩個值不相等。
- 所以就拋出了下面的這個異常,這就是為什么在增強(qiáng) for 循環(huán)中不可以進(jìn)行 AD 或者 remove 操作的原因了。
?
01:34
?
標(biāo)簽: