This question already has answers here:
Iterating through a Collection, avoiding ConcurrentModificationException when removing objects in a loop
(24个答案)
4年前关闭。
我有Java
这种方法有什么根本的错误吗?
(24个答案)
4年前关闭。
我有Java
ArrayList<Map<String, Object>>
。可以从该列表中删除元素,如下所示: for (Map<String, Object> anObject : manyObjects) {
if (anObject.get("x").equals("y")) {
manyObjects.remove(anObject);
}
}
这种方法有什么根本的错误吗?
最佳答案
使用增强的for循环迭代列表时,不能从列表中删除元素,因为它会引发CuncurrentModificationException。您可以改用显式迭代器:
Iterator<Map<String, Object>> iter = manyObjects.iterator();
while (iter.hasNext()) {
Map<String, Object> anObject = iter.next();
if (anObject.get("x").equals("y")) {
iter.remove();
}
}
关于java - Java从 map 列表中删除元素,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30654574/