java.util.ConcurrentModification並發修改異常
阿新 • • 發佈:2019-01-09
str 集合 告訴 list cat args 理解 string 解決
在運行下面這段代碼時出現了並發修改異常java.util.ConcurrentModification:
public static void main(String[] args) { List l = new ArrayList(); l.add(100); l.add(200); l.add(300); Iterator it = l.iterator(); while (it.hasNext()){ int num = (int)it.next(); if(num == 200){ l.add(400); } } System.out.println(l); }
問題所在:
遍歷的同時集合在增加元素。簡單點理解,集合告訴叠代器有多少個元素要叠代,然後叠代器去叠代了,然而集合又新增了元素,就出現了異常。
解決方法:
針對上面的代碼,可以用ListIterator來解決。讓叠代器添加元素,然後可以自動同步到集合啦。(反過來就可以- -)
public static void main(String[] args) { List l= new ArrayList(); l.add(100); l.add(200); l.add(300); ListIterator it = l.listIterator(); while (it.hasNext()){ int num = (int)it.next(); if (num == 200){ it.add(400); } } System.out.println(l); }
java.util.ConcurrentModification並發修改異常