使用java 8流将List <E>转换为Map <String,List <String >>

Diy*_*yyu 2 java java-8 java-stream

我正在寻找一些帮助将对象列表转换为Map<String, List<String>>.

class Person {   
    private String name;    
    private int age;
}
Run Code Online (Sandbox Code Playgroud)

我有一个List<Person>,我想收集Map<int, List<String>>关键是年龄和价值是同龄人的名单.

我试过这些线但是没有用

persons.stream().collect(Collectors.groupingBy(p -> p.getAge()), );
Run Code Online (Sandbox Code Playgroud)

Ous*_* D. 6

使用此重载groupingBy接受下游收集器:

Map<Integer, List<String>> map = persons.stream()
        .collect(Collectors.groupingBy(Person::getAge,
                Collectors.mapping(Person::getName, Collectors.toList())));
Run Code Online (Sandbox Code Playgroud)