问题
I have a class A which has some fields.
Class A{
String type;
String x;
String y;
}
Class B{
String x;
String y;
}
Let's say we have a list List<A>
. By using Collectors.groupingBy()
, is it possible to get output Map<String,List<B>>
instead Map<String,List<A>>
? where key
in the Map
is type
field in Class A
.
回答1:
Of course - just chain a mapping()
collector to the groupingBy()
collector.
Map<String,List<B>> map =
listA.stream()
.collect(Collectors.groupingBy(A::getType,
Collectors.mapping(a->new B(a.getX(),a.getY()),
Collectors.toList())));
来源:https://stackoverflow.com/questions/56110564/grouping-by-in-java-8-stream-to-custom-class-rather-than-the-origin-class