簡體   English   中英

ArrayList的並發修改異常

[英]Concurrent Modification Exception with ArrayList

我對ConcurrentModificationException有問題。

我有一個定義的Complex類的ArrayList 我添加了兩個Complex es,並嘗試為每個循環執行a 但是得到了ConcurrentModificationException 但是,當我刪除該行時,沒有任何錯誤。 我需要那些初始點(1,0) (-1,0)來計算,我將在以后需要點。

        for (Iterator<Complex> num = dots.iterator(); num.hasNext();) {
            // ConcurrentModificationException
            Complex aComplex = num.next();
            // clone it and clear
            temp.add(new Complex(aComplex));
            dots.clear();
        }

迭代時不能修改集合。 如果您要移動dots.clear(); 和temp.clear()在迭代之外; 它會解決的。 如果需要,可以在需要清除這些集合時創建一個標志。 迭代結束后,您可以清除它們。

除非迭代器本身具有在迭代器本身上定義的語義( remove方法),否則大多數迭代器實現均不允許修改基礎結構。

因此,在遍歷結構的同時清除結構的代碼的所有部分中,您將獲得ConcurrentModificationException

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM