Dav*_*ave -2 java java-8 java-stream
我有一个像下面这样的课程:
public class Company {
private List<Team> teams;
}
public class Team {
String name;
}
Run Code Online (Sandbox Code Playgroud)
我有这样的Compony对象的列表:
List<Company> companies = ...
Run Code Online (Sandbox Code Playgroud)
团队可以属于并出现在多个公司的列表中。
我正在寻找使用Java流将公司分组为地图的方式,并以团队名称作为地图键。每个地图条目的值是团队所属公司的列表。像这样。
Map<String, List<Company>> companiesGroupedByTeam;
Run Code Online (Sandbox Code Playgroud)
因此,同一家公司可能会出现在不同团队的列表中。
有谁知道如何使用Java流进行分组?努力做小组。
谢谢!
就像是:
Map<String, List<Company>> collect = companies.stream()
.flatMap(c -> c.getTeams().stream()
.map(t -> new AbstractMap.SimpleEntry<>(t.getName(), c)))
.collect(Collectors.groupingBy(Map.Entry::getKey,
Collectors.mapping(Map.Entry::getValue, Collectors.toList())));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
74 次 |
| 最近记录: |