【发布时间】:2019-02-08 23:57:33
【问题描述】:
我有一个Stream<Pair<String, String>> myStream;,我想把它聚合成一个Map<String, Set<String>> result;
我设法做到了以下几点:
Map<String, Set<Pair<String, String>>> result = myStream
.collect(Collectors.groupingBy(Pair::getKey, Collectors.toSet()));
这失败了,“不能从静态上下文引用非静态方法”:
Map<String, Set<String>> result = myStream
.collect(Collectors.groupingBy(Pair::getKey, Pair::getValue, Collectors.toSet()));
我做错了什么?
【问题讨论】:
-
groupingBy带有 3 个参数是groupingBy(Function<? super T,? extends K> classifier, Supplier<M> mapFactory, Collector<? super T,A,D> downstream)。第二个参数被定义为“一个函数,当被调用时,它会产生一个新的空地图所需类型”,那么你为什么认为Pair::getValue会这样工厂。 -
因为 Java 8 API 让我很难过。
标签: java collections java-8 java-stream