利用Stram来递归生成树形结构

当需要查询有子菜单,或者子部门这一类需要形成树形的数据时,我们可以使用stream流式编程写

实体类

实体类需要有一个子列,类似此处的子城市

@Data
@EqualsAndHashCode(callSuper = false)
@ApiModel(value="TRegion对象", description="地区信息表")
public class RegionVO {@TableId(value = "id", type = IdType.AUTO)private Integer id;@ApiModelProperty(value = "代码")private String code;@ApiModelProperty(value = "名称")private String name;@ApiModelProperty(value = "层级,1=省,2=市,3=区")private Integer lvl;@ApiModelProperty(value = "上级代码")private String parentCode;@ApiModelProperty("子城市")private List<RegionVO> children;}

实现类

@Overridepublic RestResult getTree() {List<RegionVO> regionVoList = mapper.getTree();// 这里就是过滤出查询出来的所有数据中lvl是1的作为最上层父级List<RegionVO> parents = (List)regionVoList.stream().filter((treex) -> {return 1 == (treex.getLvl());}).collect(Collectors.toList());return new RestResult(this.getTreeList(regionVoList, parents));}//此处的功能就是将整个查询的数据和过滤出来的父级list传入private List<RegionVO> getTreeList(List<RegionVO> fullList, List<RegionVO> parentList) {// 这里会去比对父级和子级的id,相同就会加入,然后生成整个树返回return (List)parentList.stream().map((region) -> {List<RegionVO> children = (List)fullList.stream().filter((childMenu) -> {return region.getCode().equals(childMenu.getParentCode());}).collect(Collectors.toList());region.setChildren(this.getTreeList(fullList, children));return region;}).collect(Collectors.toList());}

利用Stram来递归生成树形结构相关推荐

  1. php 递归生成树形菜单,递归生成树形结构菜单

    public List listWithTree() { //1.查出所有菜单 List categoryEntities = categoryDao.selectList(null); //2.组装 ...

  2. java 生成树形结构_java 生成树形结构(极速版)

    树形结构是非常常见的数据结构,生成树形结构的方法比较常见的有递归,for循环,不管使用什么方法,如果能很好地利用内存来合理地添加树节点,则能极大提高效率 测试代码如下: public class Te ...

  3. 在不知道根节点的情况下生成树形结构 (采用JSONObject)

    废话不多说直接上代码 /*** * 生成树形结构 在不知道跟节点的情况下* @param list 源数据* @param nodeList 跟节点数据* @param childName 子节点名称 ...

  4. WPF下递归生成树形数据绑定到TreeView上

    最终效果图:(用于学习类的效果 图片丑了点,看官莫怪) 新建窗体 然后在前端适当位置插入如下代码: <TreeView x:Name="departmentTree" Hei ...

  5. Java8新特性-使用Stream流来实现递归遍历树形结构(案例)

    Java8新特性-Stream流 可能平常会遇到一些需求,比如构建菜单,构建树形结构,数据库一般就使用父id来表示,为了降低数据库的查询压力,我们可以使用Java8中的Stream流一次性把数据查出来 ...

  6. java arraylist 遍历树_Java递归遍历树形结构

    废话不多说了,直接给大家贴代码,具体代码如下所示://菜单树形结构 public JSONArray treeMenuList(JSONArray menuList, int parentId) { ...

  7. Java后端递归构建树形结构

    记录:在Java后台利用递归思路进行构建树形结构数据,返回给前端,能以下拉菜单等形式进行展示. 简明:为了简化代码,引入Lombok的Jar包,可省略实体类set().get()方法. <dep ...

  8. Vue 递归实现树形结构

    2019独角兽企业重金招聘Python工程师标准>>> 结果展示 先给出两张效果图,左侧是百度Echarts的文档中心截图,右侧是我个人结合项目中文档中心截图 项目中假设为后台管理系 ...

  9. java—stream流递归实现树形结构

    一.在项目开发中,经常会遇到像菜单式的页面,如下图 数据表结构一般像一个树形结构一样 对应的Model体 @Data //代替get.set方法 @ApiModel("知识园地视图" ...

最新文章

  1. Python:通过一个小案例深入理解IO多路复用
  2. C语言新手写扫雷攻略3
  3. 【Android 插件化】VirtualApp 源码分析 ( 添加应用源码分析 | LaunchpadAdapter 适配器 | 适配器添加元素 | PackageAppData 元素 )
  4. sql的加减乘除运算_SQL简单查询语、运算符学习和练习
  5. mysql锁机制 php_MySQL锁机制和PHP锁机制
  6. 为什么移动硬盘的实际容量比标注容量小
  7. FFTW 和 CUFFT 的使用对比
  8. listctrl 使用入门
  9. 传说中Python最难理解的点|看这完篇就够了
  10. 架构设计之Spring-Session分布式集群会话管理
  11. 趋势科技专访:让员工选我所爱,爱我所选
  12. 用“小花生”-阅读记录app坚持打卡快3年,我带儿子在学前实现中英文阅读量4500本 ...
  13. 下了个蓝屏代码查看工具,就中病毒了。。。什么鬼病毒,竟然还是用的VBS
  14. 关于Vuex的简单理解和使用
  15. 在Excel中添加数据分析工具
  16. HMS Core积极探索基于硬件耳返的功能,助力唱吧整体唱歌延迟率降低60%
  17. 美国记者秘访Uber雇员:一代独角兽的衰落,谁来买单?
  18. R语言使用sort函数对向量数据进行排序、默认从小到大升序排序
  19. La Salle-Pui Ching Programming Challenge 培正喇沙編程挑戰賽 2017
  20. 无源与有源元件的区别

热门文章

  1. STM32单片机的GPIO寄存器CRL、CRH、IDR、ODR、BRSS、BRR
  2. ROS-语音控制-会说话的机器人(3)-科大讯飞离线语音合成+图灵机器人
  3. Rust腐蚀盒子小程序抄家工具上线
  4. python做一个星座分析_Python 画简易中文星座
  5. 远程在家办公开会,我有这些利器
  6. 鹏业安装算量软件操作按钮之图纸缩放与图元操作
  7. 新编剑桥商务英语初级第三版 答案
  8. 操作系统:时间片轮转RR进程调度算法
  9. 扭矩大好还是马力大好_马力和扭矩谁更重要?家用车到底多大动力才够用?
  10. 组原学习笔记五:计算机的运算方法