利用Stram来递归生成树形结构
利用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来递归生成树形结构相关推荐
- php 递归生成树形菜单,递归生成树形结构菜单
public List listWithTree() { //1.查出所有菜单 List categoryEntities = categoryDao.selectList(null); //2.组装 ...
- java 生成树形结构_java 生成树形结构(极速版)
树形结构是非常常见的数据结构,生成树形结构的方法比较常见的有递归,for循环,不管使用什么方法,如果能很好地利用内存来合理地添加树节点,则能极大提高效率 测试代码如下: public class Te ...
- 在不知道根节点的情况下生成树形结构 (采用JSONObject)
废话不多说直接上代码 /*** * 生成树形结构 在不知道跟节点的情况下* @param list 源数据* @param nodeList 跟节点数据* @param childName 子节点名称 ...
- WPF下递归生成树形数据绑定到TreeView上
最终效果图:(用于学习类的效果 图片丑了点,看官莫怪) 新建窗体 然后在前端适当位置插入如下代码: <TreeView x:Name="departmentTree" Hei ...
- Java8新特性-使用Stream流来实现递归遍历树形结构(案例)
Java8新特性-Stream流 可能平常会遇到一些需求,比如构建菜单,构建树形结构,数据库一般就使用父id来表示,为了降低数据库的查询压力,我们可以使用Java8中的Stream流一次性把数据查出来 ...
- java arraylist 遍历树_Java递归遍历树形结构
废话不多说了,直接给大家贴代码,具体代码如下所示://菜单树形结构 public JSONArray treeMenuList(JSONArray menuList, int parentId) { ...
- Java后端递归构建树形结构
记录:在Java后台利用递归思路进行构建树形结构数据,返回给前端,能以下拉菜单等形式进行展示. 简明:为了简化代码,引入Lombok的Jar包,可省略实体类set().get()方法. <dep ...
- Vue 递归实现树形结构
2019独角兽企业重金招聘Python工程师标准>>> 结果展示 先给出两张效果图,左侧是百度Echarts的文档中心截图,右侧是我个人结合项目中文档中心截图 项目中假设为后台管理系 ...
- java—stream流递归实现树形结构
一.在项目开发中,经常会遇到像菜单式的页面,如下图 数据表结构一般像一个树形结构一样 对应的Model体 @Data //代替get.set方法 @ApiModel("知识园地视图" ...
最新文章
- Python:通过一个小案例深入理解IO多路复用
- C语言新手写扫雷攻略3
- 【Android 插件化】VirtualApp 源码分析 ( 添加应用源码分析 | LaunchpadAdapter 适配器 | 适配器添加元素 | PackageAppData 元素 )
- sql的加减乘除运算_SQL简单查询语、运算符学习和练习
- mysql锁机制 php_MySQL锁机制和PHP锁机制
- 为什么移动硬盘的实际容量比标注容量小
- FFTW 和 CUFFT 的使用对比
- listctrl 使用入门
- 传说中Python最难理解的点|看这完篇就够了
- 架构设计之Spring-Session分布式集群会话管理
- 趋势科技专访:让员工选我所爱,爱我所选
- 用“小花生”-阅读记录app坚持打卡快3年,我带儿子在学前实现中英文阅读量4500本 ...
- 下了个蓝屏代码查看工具,就中病毒了。。。什么鬼病毒,竟然还是用的VBS
- 关于Vuex的简单理解和使用
- 在Excel中添加数据分析工具
- HMS Core积极探索基于硬件耳返的功能,助力唱吧整体唱歌延迟率降低60%
- 美国记者秘访Uber雇员:一代独角兽的衰落,谁来买单?
- R语言使用sort函数对向量数据进行排序、默认从小到大升序排序
- La Salle-Pui Ching Programming Challenge 培正喇沙編程挑戰賽 2017
- 无源与有源元件的区别