When grouping a Stream with Collectors.groupingBy
, you can specify a reduction operation on the values with a custom Collector
. Here, we need to use Collectors.mapping
, which takes a function (what the mapping is) and a collector (how to collect the mapped values). In this case the mapping is Person::getName
, i.e. a method reference that returns the name of the Person, and we collect that into a List
.
Map<Integer, List<String>> collect =
members.stream()
.collect(Collectors.groupingBy(
Person::getAge,
Collectors.mapping(Person::getName, Collectors.toList()))
);