【问题标题】:java stream groupingBy embedded objectsjava流分组按嵌入对象
【发布时间】:2020-02-14 12:07:16
【问题描述】:
我有几个对象:
public class RequestHostel {
private Hostel name;
}
和
public class Hostel {
private String value;
}
我想知道是否可以按Hostel 的值进行分组,例如
.stream().collect(Collectors.groupingBy(RequestHostel::getName::getValue, counting()))
【问题讨论】:
标签:
java
lambda
java-8
functional-programming
java-stream
【解决方案1】:
您不能像以前那样链接方法引用。但是,是的,您可以使用 lambda:
Map<String, Long> countGroupedByValue = requestHostels.stream()
.collect(Collectors.groupingBy(requestHostel -> requestHostel.getName().getValue(),
Collectors.counting()));
【解决方案2】:
你不能链接方法引用,但你可以使用 lambda:
.stream().collect(Collectors.groupingBy(rh -> rh.getName().getValue(), counting()))
或者,如果您不使用这些对象,您可以简单地映射它们:
.stream().map(RequestHostel::getName).collect(Collectors.groupingBy(Hotel::getValue, counting()))