增強(qiáng)for循環(huán)中為什么不可以進(jìn)行add和remove操作
2022-11-19 15:26 作者:蘇夢(mèng)北北ing | 我要投稿

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