1

我不确定为什么我的这部分代码会导致错误,但我知道如果我从列表中删除一个项目并且我只是在迭代它的同时我得到这个异常。我读到同步将是另一个想法,但它并不总是正确的方法。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);
                                }
                            }
                        }
                }

我该如何解决这个问题?

4

2 回答 2

4

您正在对 Selected_Weapons 集合进行迭代时对其进行修改。违规行实际上是:

Selected_Weapons.remove(www);

在这种情况下,您可能希望遍历集合,并在遍历所有项目后跟踪要删除的集合。

于 2012-10-09T00:19:36.473 回答
0

How about using ConcurrentLinkedList?

于 2012-10-09T01:53:46.767 回答