我在工作中使用到的stream流【案例1:两层树形结构】
创始人
2025-05-28 18:08:41

案例1:两层树形结构

文章目录

  • 案例1:两层树形结构
    • 介绍
    • 最后的代码
    • 知识点学习:

介绍

  • 属性:位置
    关联点:WarehouseTypes 仓库类型
    解释:这个位置可以是那些仓库的
    举例:1201,1202,12031204

  • 属性:仓库
    关联点:Warehouse 某个仓库
    举例:1201

  • 两者关系:
    一个仓库下有1个类型 1对1
    一个仓库类型字段有多个仓库类型, 1对多
    现在:n个仓库 就有n个位置

  • 需求 把仓库下的位置按照树形展开

    LabelValue的属性:key,label, value, children[]

    最后的数据样式list>
    以 label value children[]的形式给前端

最后的代码

//优化三层for循环
//所有对应的value  这个就是所有仓库的相关的了
List activeLocationTypeKeys = systemLocationQry.getActiveLocationTypeKeys();
//所有对应的value  这个就是所有仓库的相关的了
List mdLocationInfoTree =new ArrayList<>();      
mdLocationInfoTree.addAll(activeLocationTypeKeys.stream().map(key -> {parent.setLabel(LocationTypeEnum.getLabel(key));parent.setValue(key);parent.setKey(LocationTypeEnum.getLabel(key));parent.setChildren(locationInfoDTOList.stream().filter(location -> Arrays.asList(location.getLocationTypeIds().split(",")).contains(key)).map(location -> {LabelValue children = new LabelValue();children.setLabel(location.getLocationName());children.setValue(location.getId());return children;}).collect(Collectors.toList()));return parent;}).collect(Collectors.toList()));

知识点学习:

  1. list的addAll()方法
    Java List.addAll()方法:添加所有元素到列表中
    Java 集合类的 List.addAll() 方法用于将指定 collection中的所有元素添加到列表。

  2. stream().map方法
    在Java 8中stream().map(),可以将对象转换为其他对象

    这个东西说不来,看感觉吧…看上面的代码
    activeLocationTypeKeys是个字符串集合,map(key->
    这个key就是里面的每一个字符串,类似增强for循环

  3. stream() .filter方法
    主要作用就是模拟sql查询,从集合中查询想要的数据
    上面的代码是location,这里查的是
    Arrays.asList(location.getLocationTypeIds().split(“,”)).contains(key))
    这里的location指的是locationInfoDTOList
    然后去查找上面Arrays.asList中包含了key的Arrays.asLis集合元素
    TMD确实是很绕…

  4. stream.map().collect(Collectors.toList()))

    Collectors这个就是操作集合的方法可以转换成什么样的集合

  5. contains方法顾名思义,不做解释

相关内容

热门资讯

投资者提问:请问董秘,当前中日... 投资者提问:请问董秘,当前中日关系陷入僵局乃至谷底之际,公司有规划更多使用国产光刻胶等材料来替代日系...
富德生命人寿咸阳中心支公司被罚... 12月16日金融一线消息,据咸阳金融监管分局行政处罚信息公开表显示,富德生命人寿保险股份有限公司咸阳...
市场监管总局:抓紧推进出台《互... 转自:北京日报客户端记者16日从市场监管总局获悉,市场监管总局正抓紧推进《互联网平台反垄断合规指引》...
天奇股份:锂电循环业务夯实产业... 12月16日,江西天奇金泰阁集团(简称“天奇金泰阁”)资本赋能发展大会在江西龙南举行。会上,天奇股份...
「侠客岛」他们用上了“AI分身...   炒股就看金麒麟分析师研报,权威,专业,及时,全面,助您挖掘潜力主题机会! (来源:海外网)来源...