簡體   English   中英

在LinkedList上迭代時出現ConcurrentModificationException

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

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