java递归设置层级菜单的实现
更新时间:2022年08月01日 15:47:39 作者:是赵敢敢啊
本文主要介绍了java递归设置层级菜单的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
思路:
先从集合中找出来顶级的菜单,然后遍历顶级菜单,找出每个顶级菜单的所有子菜单,然后判断当前需要排列的集合是否为空,如果不为空的话,就在遍历子菜单的下级菜单,直至没有需要排列的菜单。
使用迭代器,符合条件之后将数据删除们可以减少遍历的次数
package com.eleven; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.StrUtil; import lombok.AllArgsConstructor; import lombok.Data; import java.util.ArrayList; import java.util.Collections; import java.util.Iterator; import java.util.List; /** * @author zhaojinhui * @date 2021/6/4 15:11 * @apiNote */ public class ElevenTest { public static void main(String[] args) { TestChild one = new TestChild("1","1",null); TestChild two = new TestChild("2","2","1"); TestChild sex = new TestChild("3","3","2"); List<TestChild> list = new ArrayList<>(3); Collections.addAll(list,one,two,sex); List<TestChild> tree = getTree(list); System.out.println(tree); } public static List<TestChild> getTree(List<TestChild> testChildList){ List<TestChild> result = new ArrayList<>(); for (TestChild testChild : testChildList) { if(StrUtil.isBlank(testChild.getParentId())){ result.add(testChild); } } testChildList.removeAll(result); for (TestChild testChild : result) { setChildren(testChild,testChildList); } return result; } public static void setChildren(TestChild parent,List<TestChild> list){ List<TestChild> childList = new ArrayList<>(); for(Iterator<TestChild> iterator = list.iterator();iterator.hasNext();){ TestChild next = iterator.next(); if(parent.getCode().equals(next.getParentId())){ childList.add(next); iterator.remove(); } } parent.setChildren(childList); /** 判断子集集合是否为空比遍历整个集合是否为空要慢 if(CollUtil.isNotEmpty(childLlist)) { for (TestChild testChild : childList) { setChildren(testChild, list); } } */ if(CollUtil.isNotEmpty(list)) { for (TestChild testChild : childList) { setChildren(testChild, list); } } } } @Data @AllArgsConstructor class TestChild{ private String name; private String code; private String parentId; List<TestChild> children; public TestChild(String name,String code,String parentId){ this.name = name; this.code = code; this.parentId = parentId; } }
到此这篇关于java递归设置层级菜单的实现的文章就介绍到这了,更多相关java 递归设置层级菜单内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
您可能感兴趣的文章:
相关文章
SpringBoot使用jasypt实现数据库信息脱敏的方法详解
这篇文章主要介绍了SpringBoot使用jasypt实现数据库信息的脱敏,以此来保护数据库的用户名username和密码password(容易上手,详细),文中有详细的图文讲解和代码示例供大家参考,需要的朋友可以参考下2024-06-06解决Eclipse Tomcat OutOfMemoryError:PermGen space的问题
今天小编就为大家分享一篇关于解决Eclipse Tomcat OutOfMemoryError:PermGen space的问题,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧2018-12-12
最新评论