我有以下課程:public class Foo { private String areaName; private String objectName; private String lineName;}現在我想將 a 轉換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())));我需要做什么來改變,以獲得Map<String, Map<String, List<String>>>從List<Foo>?
1 回答

幕布斯6054654
TA貢獻1876條經驗 獲得超7個贊
為了獲得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()))));
添加回答
舉報
0/150
提交
取消