java - 从 ArrayList 中删除对象时如何避免 ConcurrentModificationException

标签 java arraylist loops

我有一个 ArrayList,其中包含具有特定名称的 StoreItem 对象,例如口香糖、 socks 、糖果等。我需要迭代 ArrayList 并根据方法参数中提供的名称删除特定对象...public void removeItem (String itemtoremove) 如何在不获得 CME 的情况下执行此操作?

public void removeItem(String itemtoremove) {
   for (StoreItem anItem: this.store) {
       if (anItem.getName().equals(itemtoremove) {
            this.store.remove(anItem);
       }
    }
}

最佳答案

您没有发布相关代码,因此很难判断您的代码有什么问题

但是,避免 CME 的方法之一是

在迭代时调用迭代器上的remove(),而不是调用list.remove(obj)

编辑:

不要使用 for:each,使用迭代器迭代列表,然后在需要执行删除时调用迭代器上的remove()。

关于java - 从 ArrayList 中删除对象时如何避免 ConcurrentModificationException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12102628/

相关文章:

java - Java Stacks 中是否有 popAt、peekAt,因为它继承自其他类?

5亿(双)值的Java数据结构?

java - 如何修复致命异常 : java. lang.IndexOutOfBoundsException 索引 : 0, 大小:1

performance - 优化插入列表中间

c# - while(true)/while(1) 与 for(;;)

javascript - JavaScript for 循环中的 jQuery 不起作用

java - 如何添加自定义 MIME 类型并覆盖默认扩展模式?

java - 使用 hibernate (或 SQL 查询)在键值表中搜索

java - 复杂 Hashmap ArrayList 生成器

javascript - 遍历数组的数组