【发布时间】:2014-03-26 18:25:26
【问题描述】:
我第一次寻找 Java 8 的 Stream API。我尝试创建一个过滤器来从地图中删除元素。
这是我的地图:
Map<String, Integer> m = new HashMap<>();
我想删除值 )。
这是我一直在尝试的:
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
基本上我不知道如何构建新地图的值。
这是javadoc of Collectors,他们写了几个groupingBy 的例子,但我无法让它工作。
那么,我应该如何编写 collect 来构建我想要的地图?
【问题讨论】:
标签: java java-stream