1. 程式人生 > >java.util.ConcurrentModification並發修改異常

java.util.ConcurrentModification並發修改異常

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並發修改異常