Java Streams基于属性对列表条目进行分组,但在Map中收集对象的属性

Man*_*ami 5 collections lambda java-8 java-stream

对不起,奇怪的标题。基本上我想要做的如下。我有一个名为 Details 的类,比方说。

class Detail{
        String title;
        Project project;
}
Run Code Online (Sandbox Code Playgroud)

使用 Streams,如您所见,我可以按标题对 Detail 进行分组。但是,我想按标题而不是详细信息对这些详细信息内的项目进行分组。

List<Detail> results; // not empty    
Map<String, List<Detail>> res = results
                    .stream()
                    .collect(groupingBy(Detail::getTitle));
Run Code Online (Sandbox Code Playgroud)

谢谢,提前

Fed*_*ner 7

使用Collectors.mapping

Map<String, List<Project>> res = results
    .stream()
    .collect(Collectors.groupingBy(
        Detail::getTitle,
        Collectors.mapping(Detail::getProject, Collectors.toList())));
Run Code Online (Sandbox Code Playgroud)