0

我遇到ConcurrentModificationException問題。ArrayList發生併發修改異常

我有我定義的Complex類的ArrayList。我添加了兩個Complex es,並嘗試爲每個循環做一個,但我得到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(); 
     } 
+0

不應該'dots.clear()'和'temp.clear()'在對應的外? – madth3

回答

1

您在迭代時無法修改集合。如果你想移動dots.clear();和temp.clear()以外的迭代;它會得到解決。如果需要,可以在需要清除這些集合時創建標誌;並在迭代結束後,您可以清除它們。

+0

這有幫助!謝謝 – user1965206

+0

不能贊成,對不起。 – user1965206

0

大多數迭代器實現都不允許修改底層結構,除非它使用迭代器本身定義的語義(remove方法)。

因此,在清除結構而代碼迭代它的所有代碼段中,您將得到ConcurrentModificationException