java - 在 LinkedList 上迭代时出现 ConcurrentModificationException

标签 java android

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

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

关于java - 在 LinkedList 上迭代时出现 ConcurrentModificationException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12791190/

相关文章:

java - 迁移到android studio 3.1后出现奇怪的bug

java - Android Facebook 分享不显示在 facebook 墙上的描述

java - 我应该使用 static 还是 getters/setters?

java - 关于 View 将 Java 移植到 Android

java - Grails和Spring Security如何在 Controller 中获取复合ID?

java - 将 Integer 的 ArrayList 与多个 ArrayList 进行比较以提取共同值

java - Jackson Databind ObjectMapper ConvertValue 与自定义映射实现

Java 字符串数组不起作用。包含代码

android - "APK Signature Scheme v2"只有 "apksigner"不支持 "jarsigner"

android - 迁移项目以gradle构建系统错误