[英]ConcurrentModificationException when iterating on LinkedList
我不知道為什么我的代碼的這部分會導致錯誤,但我知道如果我從列表中刪除一個項目,我只是在同時迭代它,我得到這個異常。 我讀到同步化將是另一個想法,但它並不總是正確的apporach。 LogCat顯示while (sw.hasNext())
行的ConcurrentModificationException。 請注意,我的代碼的其他部分對列表沒有任何影響。
Iterator<Weapons> sw = Selected_Weapons.iterator();
while (sw.hasNext()) {
Weapons www = sw.next();
if (www.getY()<648){
Iterator<Container> cit2 = Containers.iterator();
while (cit2.hasNext()) {
Container c = cit2.next();
if (c.getWeaponID()==www.id){
c.setWeaponID(-1);
c.setIsEmpty(true);
Selected_Weapons.remove(www);
}
}
}
}
我怎么解決這個問題?
您正在迭代時修改Selected_Weapons集合。 違規行實際上是:
Selected_Weapons.remove(www);
在這種情況下,您可能希望迭代集合,並在迭代所有項目后跟蹤要刪除的項目。
使用ConcurrentLinkedList怎么樣?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.