Java Stream 如何实现多层map嵌套

新手上路,请多包涵
Class Template {
    private int id;
    private string type;
    private int mapId;
    private String name;
    private int platId;
}

例如一个template的集合,要通过stream的方式转成三层的map嵌套结构,怎么实现?

比如:
    {
        "${type}": {
            "${platId}": [
                {
                    "id": "${mapId}",
                    "name": "${name}"
                }
            ]
        }
    }
或者是:
    {
        "${type}": {
            "${platId}":{
                "id": "${mapId}",
                "name": "${name}"
            }
        }
    }

目前我能做的结果就是通过多层groupingBy来实现,但是在最后一层里的数据我没办法自定义,toMap和toList都不满足我的需求。

list.stream().collect(Collectors.groupingBy(Template::getType,Collectors.groupingBy(Template::getPlatId, Collectors.toList)));

当前的解决办法就是通过list.stream().forEach()来完成我的需求,但是我想知道有没有什么办法可以更简单的处理?### 问题描述

问题出现的环境背景及自己尝试过哪些方法

相关代码

// 请把代码文本粘贴到下方(请勿用图片代替代码)

你期待的结果是什么?实际看到的错误信息又是什么?

阅读 10.8k
1 个回答

Map的entrySet可以继续stream下去

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题