为了账号安全,请及时绑定邮箱和手机立即绑定

Java 8 List<Foo> 到 Map<String, Map<String

Java 8 List<Foo> 到 Map<String, Map<String

Cats萌萌 2021-12-22 19:22:17
我有以下课程: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()))));



查看完整回答
反对 回复 2021-12-22
  • 1 回答
  • 0 关注
  • 163 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号