首页 > 编程语言 >java三级菜单遍历

java三级菜单遍历

时间:2022-11-14 19:55:36浏览次数:42  
标签:遍历 java menu List childList 菜单 child id

 

java 三级菜单遍历

@Override
    public List<YjztCity> getYjzt(){
        List<YjztCity> yjztCities = yjztCityMapper.selectByExample(null);  //先获取你想要在哪些菜单范围内搜索
        List<YjztCity> rootMenus = new ArrayList<>();
        for (YjztCity menu : yjztCities) {
            //从最上级菜单开始展示
            if(menu.getType().equals("2")){
                rootMenus.add(menu);
            }
        }
        for (YjztCity rootMenu : rootMenus) {
            //把最上级菜单的子菜单获取到,子菜单的子菜单也会获取到(目前是三层,由于是递归调用,100层也没问题)
            List<YjztCity> child = getChild(rootMenu.getZfwqydm(), yjztCities);
            rootMenu.setChildren(child);
        }
        return rootMenus;
    }

    private List<YjztCity> getChild(String id,List<YjztCity> menus){
        List<YjztCity> childList = new ArrayList<>();
        for (YjztCity menu : menus) {
            if(menu.getZfwsjqydm().equals(id)){
                //当菜单范围内的父id等于传入的id,获取该id的所有子列表
                childList.add(menu);
            }
        }
        for (YjztCity menu : childList) {
            //当上面循环语句查询不到子菜单,长度为0,自然也就不会递归调用了
            //将该id的子菜单便利,通过递归调用,给每一个子菜单赋值子菜单
            List<YjztCity> child = getChild(menu.getZfwqydm(), menus);
            menu.setChildren(child);
        }
        if(childList.size()==0){
            //子菜单的长度为0,返回null,null不会被jackson解析
            return null;
        }
        return childList;
    }

  

数据库设计

 

 

 

标签:遍历,java,menu,List,childList,菜单,child,id
From: https://www.cnblogs.com/xingmeng63/p/16890174.html

相关文章

  • 力扣278(java&python)-第一个错误的版本(简单)
    题目:你是产品经理,目前正在带领一个团队开发新的产品。不幸的是,你的产品的最新版本没有通过质量检测。由于每个版本都是基于之前的版本开发的,所以错误的版本之后的所有版本......
  • 小新Java8-【final、权限、内部类、引用类型】
    一、final关键字1.概述final:不可改变。可以用于修饰类、方法和变量。类:被修饰的类,不能被继承。方法:被修饰的方法,不能被重写。变量:被修饰的变量,不能被重新赋值。2.......
  • 第一天复习Java基础
    java基础语法1注释,标识符,关键字注释书写注释是一个很好的习惯,他是写给人看的。平时写代码一定要规范Java的三种注释单行注释//多行注释/*注释*/(可以注释多......
  • 【JAVA面试】java面试题整理(4)
                          java面试题整理(4)JAVA常考点4目录​​1、Set集合如何保证不重复1​​​​2、Java中Integer型和int型......
  • 【Spark】java.lang.NoSuchMethodException: org.apache.hadoop.hive.ql.metadata.Hiv
    2/11/1419:02:23ERROR[main]SparkUncaughtExceptionHandler:UncaughtexceptioninthreadThread[main,5,main]java.lang.NoSuchMethodException:org.apache.hado......
  • Win11右键菜单改为Win10设计【自用】
    出处:【Win11右键菜单改为Win10设计】https://www.bilibili.com/video/BV1gB4y1L7Uj?vd_source=5e9bda91f690b8bf5340dc78c84bccbd修改:reg add HKCU\Software\Classes\C......
  • Java:String、StringBuilder、StringJoiner学习笔记
    String创建的俩种方式1.直接赋值Stringstr="HelloWorld!";        当使用直接赋值的方式去创建字符串的时候,虚拟机会去串池里去检查字符串是否存在,如果......
  • IEEE-754浮点数标准与JavaScript中的number
    1、概述如何使用8个字节表示特定的数字(整数或小数),其中要满足精度足够高,和表示的数字尽可能的大。聪明的你肯定想到使用科学计数法来表示,其中64位中,需要包含确定正负的符号......
  • Java学习——11.14
    将近4天没更新啊,为什么呢,主要是面向过程太难太抽象了,不过好在我用四天还是将他理解了。1.封装(关键字:private)保护私有的方法和属性。set直接修改private  ......
  • Java高并发处理优惠券防超卖接口!
    问题抛出在近期的项目里面有一个功能是领取优惠券的功能。问题描述:每一个优惠券一共发行多少张,每个用户可以领取多少张:如:A优惠券一共发行120张,每一个用户可以领取140张,当一......