邊遍歷邊修改 Collection 的唯一正確方式是使用 Iterator.remove() 方法,如下:
一種最常見的錯(cuò)誤代碼如下:
運(yùn)行以上錯(cuò)誤代碼會(huì)報(bào) ConcurrentModificationException 異常。這是因?yàn)楫?dāng)使用 foreach(for(Integer i : list)) 語句時(shí),會(huì)自動(dòng)生成一個(gè)iterator 來遍歷該 list,但同時(shí)該 list 正在被 Iterator.remove() 修改。Java 一般不允許一個(gè)線程在遍歷 Collection 時(shí)另一個(gè)線程修改它。