我正在与Java 8 Streams合作,我有一个如下所示的类:
public class ShareDao {
private String senderId;
private String receiverId;
public String getSenderId() {
return senderId;
}
public String sharingMode(){
return this.receiverId != null && !this.receiverId.trim().isEmpty() ? "incoming" : "outgoing";
}
}现在我想做的是:
下面是我的代码:
Map<String, Map<String, List<ShareDao>>> p = records.stream()
.filter(shared -> userMap.containsKey(shared.getSenderId()))
.collect(Collectors.groupingBy(ShareDao::getSenderId), Collectors.groupingBy(ShareDao::sharingMode, Function.identity()));它把我抛出了错误:
错误:(105,90) java:没有为java.util.stream.Collectors.groupingBy(java.util.function.Function) (Share...gMode,java.util.function.Function)方法找到合适的方法不适用(无法推断类型变量T、K(实际和形式参数列表长度不同))方法java.util.stream.Collectors.groupingBy(java.util.function.Function,。不适用(不存在类型变量T的实例,因此java.util.stream.Collectors.groupingBy(java.util.function.Function,java.util.function.Supplier,java.util.stream.Collector)方法不适用(不能推断类型变量T、K、D、A、M(实际和形式参数列表长度不同))。
当Intellij Idea引发错误时
Non-Static method cannot be referenced from static context
发布于 2019-02-23 12:08:51
基于你想要达到的目标
您可以使用:
Map<String, Map<String, List<ShareDao>>> p = records.stream()
.filter(shared -> userMap.containsKey(shared.getSenderId())) // filter records
.collect(Collectors.groupingBy(ShareDao::getSenderId, // grouping by senderId
Collectors.groupingBy(ShareDao::sharingMode))); //further grouping by sharingModeNote
groupingBy属性导致将值聚合为List。Collector中定义的collect与您的尝试不同。https://stackoverflow.com/questions/54841178
复制相似问题