[英]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.