如何在流式传输时删除哈希映射的元素 (lambda)

2022-08-31 16:31:54

我遇到以下情况,我需要从流中删除元素。

map.entrySet().stream().filter(t -> t.getValue().equals("0")).
            forEach(t -> map.remove(t.getKey()));

在Java 8之前的代码中,可以从迭代器中删除 - 在这里处理这种情况的最佳方法是什么?


答案 1
map.entrySet().removeIf(entry -> entry.getValue().equals("0"));

你不能用流来做,但可以用其他新方法做。

编辑:甚至更好:

map.values().removeAll(Collections.singleton("0"));

答案 2

如果要删除整个密钥,请使用:

myMap.entrySet().removeIf(map -> map.getValue().containsValue("0"));