JavaList集合根据ParentId递归【无限套娃】
关键代码:
public List<Map<String,Object>> getChild(String pid , List<Menu> allList){List<Map<String,Object>> childList = new ArrayList<>();//用于保存子节点的listfor(Menu ms : allList){if(pid.equals(ms.getParentId())){//判断传入的父id是否等于自身的,如果是,就说明自己是子节点Map<String,Object> map = new HashMap<>();map.put("id",ms.getId());map.put("pId", ms.getParentId());map.put("mate",ms.getName());map.put("hasChildren",false);map.put("ChildNodes", new Object[]{});childList.add(map); //加入子节点}}for(Map<String,Object> map : childList){//遍历子节点,继续递归判断每个子节点是否还含有子节点List<Map<String,Object>> tList = getChild(String.valueOf(map.get("id")) , allList);if(!tList.isEmpty()){map.put("hasChildren",true);}map.put("ChildNodes" , tList);}return childList;}
代码调用:
@ResponseBody@RequestMapping(value = "authMenu", method = RequestMethod.GET)public List<Map<String, Object>> authMenu(String roleId) {List<Menu> list = menuService.findMenuByRoleId(roleId);List<Map<String, Object>> child = getChild("0",list);return child;}
数据结构:
数据结果:
Object{...},{"ChildNodes":[{"ChildNodes":[],"hasChildren":false,"name":"技术资料","pId":"3fac53a94abd4d8786cee4fb09b59bb1","id":"6854f03596724c589e22d6e0ede3054e"}],"hasChildren":true,"name":"接触网","pId":"d26688a8498045c0ac4036a4231f6a31","id":"3fac53a94abd4d8786cee4fb09b59bb1"},Object{...},{"ChildNodes":[],"hasChildren":false,"name":"AT所","pId":"d26688a8498045c0ac4036a4231f6a31","id":"1569ce89bd454485b127b5a14fd0941a"},{"ChildNodes":[],"hasChildren":false,"name":"分区所","pId":"d26688a8498045c0ac4036a4231f6a31","id":"6acbab2f46e544a48596df8ae1b409b2"},{"ChildNodes":[{"ChildNodes":[{"ChildNodes":[{"ChildNodes":[],"hasChildren":false,"name":"断链","pId":"07f092f3578247db8cba2feb6050d8ae","id":"64d3f7c7073148a8bb167a77daf01b24"},{"ChildNodes":[],"hasChildren":false,"name":"曲线要素","pId":"07f092f3578247db8cba2feb6050d8ae","id":"ae8b1bebfbbc41a194688cf21499cb23"},{"ChildNodes":[],"hasChildren":false,"name":"直曲","pId":"07f092f3578247db8cba2feb6050d8ae","id":"8deb7242334349b58049e66335a5b408"},{"ChildNodes":[],"hasChildren":false,"name":"竖曲线要素","pId":"07f092f3578247db8cba2feb6050d8ae","id":"f38f88250ab54f5f8f442c66ed04a291"},{"ChildNodes":[],"hasChildren":false,"name":"竖曲线","pId":"07f092f3578247db8cba2feb6050d8ae","id":"111e6ffb22ab440ba17ac7c74a5503a6"},{"ChildNodes":[],"hasChildren":false,"name":"线间距","pId":"07f092f3578247db8cba2feb6050d8ae","id":"a2a189a467ac4ba8a185ad3827296a4d"},{"ChildNodes":[],"hasChildren":false,"name":"特殊处所图例","pId":"07f092f3578247db8cba2feb6050d8ae","id":"f036d0c616db4cd5b4f5e599c666dfda"},{"ChildNodes":[],"hasChildren":false,"name":"平面布置","pId":"07f092f3578247db8cba2feb6050d8ae","id":"3ddd21216c214de78949668472c6f8d9"}],"hasChildren":true,"name":"基础数据","pId":"a67ae46fe71646159e76cbe53764c4c6","id":"07f092f3578247db8cba2feb6050d8ae"},{"ChildNodes":[],"hasChildren":false,"name":"线路放样","pId":"a67ae46fe71646159e76cbe53764c4c6","id":"77a2b8e7dee44c0f8d4154a68b24824e"}],"hasChildren":true,"name":"基础数据测量系统","pId":"e1ccaf5a237244eda9a87bfbe335a865","id":"a67ae46fe71646159e76cbe53764c4c6"},{"ChildNodes":[],"hasChildren":false,"name":"一杆一档工程数据","pId":"e1ccaf5a237244eda9a87bfbe335a865","id":"49b03a6b78624e62a32682cad82b653a"},{"ChildNodes":[{"ChildNodes":[],"hasChildren":false,"name":"供电段","pId":"7f9efd8cbe734f47b9897486cb8dfb77","id":"206a688026324bcf9e68093394c54bdb"},{"ChildNodes":[],"hasChildren":false,"name":"车间数据","pId":"7f9efd8cbe734f47b9897486cb8dfb77","id":"a2dc2437f2534aae8997806cdc52211d"},{"ChildNodes":[],"hasChildren":false,"name":"工区数据","pId":"7f9efd8cbe734f47b9897486cb8dfb77","id":"63e24b9f5ad541eea01a1a9929f52418"},{"ChildNodes":[],"hasChildren":false,"name":"区间(站厂)","pId":"7f9efd8cbe734f47b9897486cb8dfb77","id":"adfd7fa191e84d959137aac69b79a68d"},{"ChildNodes":[],"hasChildren":false,"name":"隧道数据","pId":"7f9efd8cbe734f47b9897486cb8dfb77","id":"acf44e69aa6c4cec88cf9ae48f764c95"},{"ChildNodes":[],"hasChildren":false,"name":"桥梁数据","pId":"7f9efd8cbe734f47b9897486cb8dfb77","id":"0b78cd8d695b450ca0fd295bebb4e4a8"},{"ChildNodes":[],"hasChildren":false,"name":"接触悬挂锚段","pId":"7f9efd8cbe734f47b9897486cb8dfb77","id":"fc4f0ebf95824757a749932ae07fe58e"},{"ChildNodes":[],"hasChildren":false,"name":"支柱运维检修","pId":"7f9efd8cbe734f47b9897486cb8dfb77","id":"bc3f760b851a4b4b9548ab79aed02125"}],"hasChildren":true,"name":"基础数据","pId":"e1ccaf5a237244eda9a87bfbe335a865","id":"7f9efd8cbe734f47b9897486cb8dfb77"},{"ChildNodes":[{"ChildNodes":[],"hasChildren":false,"name":"腕臂计算输入","pId":"e2a9904dcc6a4c27acea60ed00aef4f4","id":"de123547a63f4a5f8112bd53f2d6a768"},{"ChildNodes":[],"hasChildren":false,"name":"吊弦计算输入","pId":"e2a9904dcc6a4c27acea60ed00aef4f4","id":"f779ac39a2334de1a758252f0ab52cbc"},{"ChildNodes":[],"hasChildren":false,"name":"腕臂计算输出","pId":"e2a9904dcc6a4c27acea60ed00aef4f4","id":"875d3268bc9d4ded8a09b8be8fc4ed46"},{"ChildNodes":[],"hasChildren":false,"name":"吊弦计算输出","pId":"e2a9904dcc6a4c27acea60ed00aef4f4","id":"56c80ddd9bc14c618e98bf021b423ff8"}],"hasChildren":true,"name":"接触网计算系统","pId":"e1ccaf5a237244eda9a87bfbe335a865","id":"e2a9904dcc6a4c27acea60ed00aef4f4"},{"ChildNodes":[{"ChildNodes":[],"hasChildren":false,"name":"支柱信息","pId":"ed7bfec4788e4a4ba6df826b0b642642","id":"143bbc3e6c3e457f8e69feeea657e8c3"},{"ChildNodes":[],"hasChildren":false,"name":"支持装置","pId":"ed7bfec4788e4a4ba6df826b0b642642","id":"f47dcb64ee2d4ce1a5a10b5fd215be7b"},{"ChildNodes":[],"hasChildren":false,"name":"接触悬挂","pId":"ed7bfec4788e4a4ba6df826b0b642642","id":"1ba8009be7bb4b8cbb5560079fb851db"},{"ChildNodes":[],"hasChildren":false,"name":"线路放样","pId":"ed7bfec4788e4a4ba6df826b0b642642","id":"f6f5efc2f57746d9bed355a703493431"}],"hasChildren":true,"name":"线路数据驱动","pId":"e1ccaf5a237244eda9a87bfbe335a865","id":"ed7bfec4788e4a4ba6df826b0b642642"}],"hasChildren":true,"name":"接触网工程","pId":"d26688a8498045c0ac4036a4231f6a31","id":"e1ccaf5a237244eda9a87bfbe335a865"}],"hasChildren":true,"name":"四电工程","pId":"0","id":"d26688a8498045c0ac4036a4231f6a31"},
JavaList集合根据ParentId递归【无限套娃】相关推荐
- 无限套娃(递归)的强行挣脱!!!
问题代码: #include<iostream> #include<vector> using namespace std;vector<vector<int> ...
- 远程服务器套娃,无限套娃!RemoteView云上浏览器:运行在浏览器里的远程浏览器...
无限套娃!RemoteView云上浏览器:运行在浏览器里的远程浏览器 极一 • 2020 年 01 月 19 日 简介 RemoteView是一款部署在服务器中的远程浏览器,可以方便快捷地使用服务器的 ...
- 递归很套娃怎么办?来,这篇文章带你快速领悟递归的奥义
文章目录 递归的定义和必要条件 初步了解 打印一个数的每一位 计算一个数的每位之和 计算一个数的阶乘 进阶探讨 二分查找法递归实现 递归实现字符串函数strlen 递归实现字符串逆序 总结 递归的定义 ...
- 当你试图将【圣杯布局】无限套娃__
刚学会圣杯布局 突发奇想... 先是简单的嵌套 限界だ 同理可得{ 再用iframe再嵌套自我的克隆体_ 再在克隆体中用iframe嵌套自我的克隆体_ 再再在克隆体的克隆体中用iframe嵌套自我的克 ...
- JQ+vue实现图片拼接(无限套娃版)
css样式/* css初始化 */* {margin: 0;padding: 0;}/* 去掉li的小圆点 */li {list-style: none;}/* 去掉a的下划线 */a {text-d ...
- 论Flutter开发如何改善套娃地狱问题
/ 今日科技快讯 / 近日,滴滴旗下自动驾驶公司宣布与广汽埃安新能源汽车有限公司达成战略合作.滴滴出行董事长兼CEO程维与广汽集团董事长曾庆洪,共同见证签约仪式. / 作者简介 / 本 ...
- Flutter 改善套娃地狱问题(仿喜马拉雅PC页面举例)
前言 这篇文章是我一直以来很想写的一篇文章,终于下定决心动笔了. 写Flutter的小伙伴可能都感受到了:掘金的一些热门的Flutter文章下,知乎的一些Flutter的话题下或者一些论坛里面,喷Fl ...
- Python|“套娃”算法-递归算法解决全排列
欢迎点击「算法与编程之美」↑关注我们! 本文首发于微信公众号:"算法与编程之美",欢迎关注,及时了解更多此系列文章. 1 什么是递归? 什么是递归?晦涩难懂而又有学术气息的解释网上 ...
- 接口返回json对象出现套娃递归问题 | System.Text.Json 版本
前言 看到一篇文章<Asp-Net-Core开发笔记:接口返回json对象出现套娃递归问题> 原文是使用 NewtonsoftJson 解决的返回json对象出现套娃递归问题: servi ...
- DNSSEC?禁止套娃!
简介 DNSSEC是DNS安全拓展,主要思想是通过在DNS记录中添加加密签名,从而为DNS解析流程提供来源可认证和数据完整性的保障. 本文的目的是帮助大家大致理解DNSSEC的工作流程 建议读者先掌握 ...
最新文章
- 揭秘|多伦多大学反人脸识别,身份欺骗成功率达99.5%
- BusinessObject J2EE单点登陆简单使用
- python数据结构与算法(11)
- ArcSDE建Table在ArcCatalog中不可见
- 【机器学习入门笔记13:BP神经网络逼近股票收盘价格】20190218
- Ext this.getView(...).saveDocumentAs is not a function
- 1030 Travel Plan [Dijkstra]
- Java容器---List
- 华众 mysql_华众6.5虚拟主机管理系统SQL注入漏洞利用
- vm虚拟机iso镜像linux系统下载地址,Vmware Tools ISO 虚拟机ISO系统镜像大全
- BlockUI详细用法
- 网站seo优化一定要注意这几件事
- unity给头发添加物理_U3D实时渲染教程之角色头发各向异性表达(上)
- BottomNavigationView简单使用,增加小红点,增加中间操作按钮
- SVPWM的一些参数
- 2W公里,就换EBC刹车片?
- 基础练习 Sine之舞
- 计算机专业当兵退役什么工作,当兵退伍后能做什么 能干什么工作
- 阿里云国际版账户收到账号风险通知,怎么办?
- HTML字体可以设百分比嘛,使用百分比字体大小?