我有一个 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/