This question already has answers here:
Iterating through a Collection, avoiding ConcurrentModificationException when removing objects in a loop
                                
                                    (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/

10-11 19:19
查看更多