Xtr*_*mer 5 java java-8 java-stream
我有以下课程:
public class Foo {
private String areaName;
private String objectName;
private String lineName;
}
Run Code Online (Sandbox Code Playgroud)
现在我想转换List<Foo>为Map<String, Map<String, List<String>>>.我发现这个答案帮助我开发了以下代码:
Map<String, Map<String, List<String>>> testMap = foos.stream().collect(Collectors.groupingBy(e -> e.getAreaName(),
Collectors.groupingBy(e -> e.getObjectName(), Collectors.collectingAndThen(Collectors.toList(),
e -> e.stream().map(f -> f.getLineName())))));
Run Code Online (Sandbox Code Playgroud)
此代码的唯一问题是它应转换为的部分List<String>.我无法找到转换Foo到List该部分的方法.
另一种方法导致Map<String, Map<String, List<Foo>>>:
Map<Object, Map<Object, List<Foo>>> testMap = ventures.stream().collect(Collectors.groupingBy(e -> e.getAreaName(),
Collectors.groupingBy(e -> e.getObjectName(), Collectors.toList())));
Run Code Online (Sandbox Code Playgroud)
我需要做什么才能得到改变Map<String, Map<String, List<String>>>从List<Foo>?
Era*_*ran 11
为了获得List与Stream元素类型不同的类型,您应该将Collectors.mapping收集器链接到groupingBy:
Map<String, Map<String, List<String>>> testMap =
foos.stream()
.collect(Collectors.groupingBy(Foo::getAreaName,
Collectors.groupingBy(Foo::getObjectName,
Collectors.mapping(Foo::getLineName,
Collectors.toList()))));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
414 次 |
| 最近记录: |