当前位置: 首页 > article >正文

java 二级列表 stream流实现

效果:

表数据的样子 

代码:

 public Result secondaryList() {
        List<MachineryType> machineryTypes = machineryTypeMapper.selectList(new QueryWrapper<MachineryType>().orderByAsc("pid"));
        // 创建父子关系
        Map<Integer, MachineryType> machineryTypeMap = machineryTypes.stream()
                .collect(Collectors.toMap(MachineryType::getId, c -> c));

        List<MachineryType> outList = machineryTypes.stream()
                .filter(c -> c.getPid() == 0) // 过滤出父节点
                .peek(parent -> {
                    List<MachineryType> children = machineryTypes.stream()
                            .filter(child -> child.getPid().equals(parent.getId()))
                            .collect(Collectors.toList());
                    parent.setChildren(children); // 设置子节点
                })
                .collect(Collectors.toList());
        return Result.success(outList);
    }


http://www.kler.cn/a/287454.html

相关文章:

  • 17.100ASK_T113-PRO 配置QT运行环境(三)
  • Datawhale组队学习】模型减肥秘籍:模型压缩技术3——模型量化
  • .NET 简介
  • 阿里云引领智算集群网络架构的新一轮变革
  • 【AlphaFold3】开源本地的安装及使用
  • Qt 之 qwt和QCustomplot对比
  • 力扣经典题目之->另一颗树的子树(subRoot是否是root的子树)
  • 【STM32 Blue Pill编程】-ADC数据采样(轮询、中断和DMA模式)
  • Linux使用openssl生成ssl证书
  • 游戏设计师:创造虚拟世界的艺术家
  • 江协科技stm32————10-1 I2C通信协议
  • 【C语言必学知识点六】自定义类型——结构体
  • 芯旺微,车规级32位MCU KF32A芯片简介
  • 内存管理篇-14kmalloc机制实现分析
  • SpringBoot整合积木报表
  • 14 大模型微调-KitTrain
  • OpenGL/GLUT实践:绘制旋转的立方体与雪人世界——添加光照与SOIL方式添加纹理(电子科技大学信软图形与动画Ⅱ实验)
  • Linux中如何查看一个进程?如何杀死一个进程?如何查看某个端口有没有被占用?
  • 【Python报错已解决】`TypeError: ‘numpy.ndarray‘ object is not callable`
  • DDS(Data Distribution Service)的数据状态分布和管理简单介绍
  • 微软AD替代方案统一管理Windows和信创电脑的登录认证与网络准入认证
  • Redis的内存淘汰策略- allkeys-lru
  • 用相图分析 bbr,inflight 守恒的收敛速度
  • HTTP协议的建立和终止涉及到TCP协议的连接管理
  • 网络:通过ipv6打开网页
  • 打脸预测,AI泡沫破裂,科技衰退