簡單複習一下集合順帶提一下這個錯誤,其實也比較常見,大多是因為疏忽的原因吧; 我們創建一個集合,添加了一些元素,使用迭代器來遍歷,然後遍歷途中需要進行一些邏輯操作,對集合進行修改,然後就報錯了,這是什麼原因呢? 集合是集合,迭代器是迭代器,兩個不是同一個東西,可以把迭代器理解為集合的一個快照或副本, ...
簡單複習一下集合順帶提一下這個錯誤,其實也比較常見,大多是因為疏忽的原因吧;
我們創建一個集合,添加了一些元素,使用迭代器來遍歷,然後遍歷途中需要進行一些邏輯操作,對集合進行修改,然後就報錯了,這是什麼原因呢?
集合是集合,迭代器是迭代器,兩個不是同一個東西,可以把迭代器理解為集合的一個快照或副本,當兩者的內容不一致的時候,就拋出 new ConcurrentModificationException();
源碼中不難發現:
而上面那兩個變數就是判斷集合改變而定義的count
public static void main(String[] args) { Collection list = new ArrayList<>(); list.add("xiaowang"); list.add("dawang"); list.add("laowang"); System.out.println(list.toString()); Iterator iterator = list.iterator(); while (iterator.hasNext()) { String s = (String) iterator.next(); if (s.equals("xiaowang")) { list.add("gebilaowang"); } }