【问题标题】:Removing an element from a Map in Java [duplicate]从Java中的地图中删除元素[重复]
【发布时间】:2020-05-27 02:37:09
【问题描述】:

我试图从我的 map 中删除一个元素,但它给出了一个错误。

代码:

Map<String, String> map = ["a":"test",
           "b":"test",
           "c":"test",
           "d":""]

for (data in map.entrySet()){
    if (data.getValue() != ""){
        map.remove(data.getKey())
    }
}

错误:

Caught: java.util.ConcurrentModificationException*
java.util.ConcurrentModificationException
at first_script.run(first_script.groovy:6)

Process finished with exit code 1

我知道它正在发生,因为我试图同时删除它。有什么方法可以在不为我需要删除的元素创建列表的情况下做到这一点?

【问题讨论】:

标签: java dictionary hashmap


【解决方案1】:

尝试使用removeIf,还请注意您必须使用equals 来检查字符串:

map.entrySet().removeIf(e -> !e.getValue().equals(""));

或者更好,你可以使用isEmpty

map.entrySet().removeIf(e -> !e.getValue().isEmpty())

或者更好,因为你基于你的条件值,你可以使用values(),而不是entrySet()

map.values().removeIf(v -> !v.isEmpty());

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-10-13
    • 1970-01-01
    • 2018-08-08
    • 2018-08-08
    • 2016-07-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多