[英]From List<Foo> to Map<String, List<Foo>>: looking for a better implementation
[英]Java 8 List<Foo> to Map<String, Map<String, List<String>>>
我有以下課程:
public class Foo {
private String areaName;
private String objectName;
private String lineName;
}
現在我想將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())))));
此代碼的唯一問題是它應轉換為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())));
為了從List<Foo>
接收Map<String, Map<String, List<String>>>
,我需要更改什么?
為了獲得與Stream
元素類型不同的List
,您應該將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()))));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.