gpt4 book ai didi

java - 如何在 Java 8 Stream API 中使用 Collectors.grouping 来创建 map

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:13:40 24 4
gpt4 key购买 nike

我第一次寻找 Java 8 的 Stream API。我尝试创建一个过滤器来从 Map 中删除元素。

这是我的 map :

Map<String, Integer> m = new HashMap<>();

我想删除值 <= 小于 0 的条目。所以我想应用过滤器并取回新 map (Map )。

这是我一直在尝试的:

m.entrySet().stream().filter( p -> p.getValue() > 0).collect(Collectors.groupingBy(s -> s.getKey()));    

我得到一个 HashMap >。所以,这不是我想要的。

我也试过:

m.entrySet().stream().filter( p -> p.getValue() > 0).collect(Collectors.groupingBy(Map::Entry::getKey, Map::Entry::getValue));

这导致:

// Error:(50, 132) java: method reference not expected here

基本上我不知道如何构建我的新 map 的值。

这是 javadoc of Collectors ,他们写了几个 groupingBy 的例子,但我没能让它工作。

那么,我应该如何编写 collect 来构建我想要的 map ?

最佳答案

你不需要再次对流项目进行分组,它们已经“映射”了——你只需要收集它们:

m.entrySet().stream()
.filter(p -> p.getValue() > 0)
.collect(toMap(Entry::getKey, Entry::getValue));

导入:

import java.util.Map.Entry;
import static java.util.stream.Collectors.toMap;

关于java - 如何在 Java 8 Stream API 中使用 Collectors.grouping 来创建 map ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22669885/

24 4 0