邊遍歷邊修改 Collection 的唯一正確方式是使用 Iterator.remove() 方法,如下:
一種最常見的錯誤代碼如下:
運行以上錯誤代碼會報 ConcurrentModificationException 異常。這是因為當使用 foreach(for(Integer i : list)) 語句時,會自動生成一個iterator 來遍歷該 list,但同時該 list 正在被 Iterator.remove() 修改。Java 一般不允許一個線程在遍歷 Collection 時另一個線程修改它。