【发布时间】:2020-03-24 13:13:21
【问题描述】:
当 isActive 为 false 时,我正在尝试删除实体。当实体属性isActive设置为false时,它进入if语句并删除实体,之后再次遍历实体列表然后崩溃。根据我的研究,我正在使用正确的方法从数组列表中删除一个对象。
删除实体并遍历列表时的代码是
for (Entity entity : entities) {// itaarate through all the entities in list of entities
entity.render(shader, camera, this);// render each entity
if (!entity.isActive())// checks if entity attribute is active
entities.remove(entity);// removes entity from list
}
在从列表中删除实体后使用调试器时,它会返回到 for 循环的顶部,然后显示此页面
调试时的变量窗口
控制台中显示的完整错误是
Exception in thread "main" java.util.ConcurrentModificationException
at java.util.ArrayList$Itr.checkForComodification(Unknown Source)
at java.util.ArrayList$Itr.next(Unknown Source)
at project.World.render(World.java:196)
at project.Main.<init>(Main.java:152)
at project.Main.main(Main.java:167)
正在创建的列表是
public static ArrayList<Entity> entities; // contains all entities
【问题讨论】:
标签: java exception arraylist concurrentmodification