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三级菜单遍历的更多相关文章

  1. day1作业--三级菜单

    作业概述: 写一个三级菜单 实现如下功能: (1)可依次选择进入各子菜单 (2)在每一级按“b”都可以返回上一级,按“q"都可以退出 流程图: readme: 简介: three_menu. ...

  2. python三级菜单

    #-*- coding:utf-8 -*-#Author:gxli #一级菜单项def menu(): #遍历字典dic一级菜单 print('-----------一级菜单------------- ...

  3. Android--简单的三级菜单

      关于这个菜单应该在很多播放器应用里面可以看见,直接先上两张效果图吧,一张是该Demo的效果图,一张是优酷手机客户端的效果图.                                     ...

  4. Python学习之编写三级菜单(Day1,作业二)

    作业二:多级菜单 三级菜单 可依次进入各子菜单 在各级菜单中输入B返回上一级Q退出程序 知识点:字典的操作,while循环,for循环,if判断 思路: 1.开始,打印一级菜单让用户进行选择(可以输入 ...

  5. android 三级菜单 BaseExpandableListAdapter

    在网上搜了非常长时间.没有找到合适的Android三级菜单.所以就自己动手写了一个,主要使用了BaseExpandableList来实现,通过三个布局文件来完毕相应的菜单项,详细实现请參照下图. wa ...

  6. 我的Python成长之路---第一天---Python基础(作业2:三级菜单)---2015年12月26日(雾霾)

    作业二:三级菜单 三级菜单 可一次进入各个子菜单 思路: 这个题看似不难,难点在于三层循环的嵌套,我的思路就是通过flag的真假来控制每一层的循环的,简单来说就是就是通过给每一层循环一个单独的布尔变量 ...

  7. Python递归 — — 二分查找、斐波那契数列、三级菜单

    一.二分查找 二分查找也称之为折半查找,二分查找要求线性表(存储结构)必须采用顺序存储结构,而且表中元素顺序排列. 二分查找: 1.首先,将表中间位置的元素与被查找元素比较,如果两者相等,查找结束,否 ...

  8. JavaEE权限管理系统的搭建(六)--------使用拦截器实现菜单URL的跳转权限验证和页面的三级菜单权限按钮显示

    本小结讲解,点击菜单进行页面跳转,看下图,点击管理员列表后会被认证拦截器首先拦截,验证用户是否登录,如果登录就放行,紧接着会被权限验证拦截器再次拦截,拦截的时候,会根据URL地址上找到对应的方法,然后 ...

  9. 老男孩Day1作业(二):三级菜单

    作业需求: 1. 运行程序输出第一级菜单 2. 选择一级菜单某项,输出二级菜单,同理输出三级菜单 3. 菜单数据保存在文件中 4. 让用户选择是否要退出 5. 有返回上一级菜单的功能 1)编写思路 编 ...

  10. jquery 根据后台传递过来的三维数组动态生成三级菜单

    根据后台传递过来的三维数组动态生成三级菜单 <!DOCTYPE html> <html lang="en"> <head> <meta c ...

随机推荐

  1. mysql 5.7 gtid 主从复制

    GTID中slave端的binlog是必须开启的,目的是记录执行过的GTID 主库#开启gtidlog-bin=mysql-binexpire_logs_days = 5binlog_format=r ...

  2. 如何使用新版bing(支持ChatGPT)

    就在今天,2023年2月8日,微软正式将ChatGPT引入Bing 搜索引擎迎来新时代 如何体验支持ChatGPT的新版bing? 一.重要说明 请自备TiZi 本文以PC端为例 目前,新版 Bing ...

  3. 安全测试-WEB安全渗透测试基础知识(一)

     1.1. Web技术演化  1.1.1. 静态页面 在互联网最初开始的时候,Web网站的主要内容是静态的,由文字和图片组成,制作和表现形式也是以表格为主.当时的用户行为也非常简单,仅仅是浏览网页. ...

  4. CVE-2023-25813 漏洞

    自己使用Nestjs 搭配 Sequelize ,在安装新包的时候提示有Critical 风险.有漏洞嘛,要第一时间处理,要处理,除了升级,还要看一下这个漏洞如何复现. 粗略得到结果如下: CVE-2 ...

  5. Hello,Golang

    Hello,Golang 一.开发环境搭建 1. 下载 SDK 1 // Go官网下载地址 2 https://golang.org/dl/ 3 ​ 4 // Go官方镜像站(推荐) 5 https: ...

  6. Delphi获取程序版本号

    参考: http://www.delphitop.com/html/hanshu/4627.html procedure GetVersionInfo(const FileName:string; v ...

  7. ASP.NET Core Filter如何支持依赖注入

    通过Filter来支持:分别有IResourceFilter AuthorizeFilter ActionFilter ExceptionFilter ResultFilter,Filter也被称为拦 ...

  8. (0720) 【 表示 n'b0; 】

    注意 花括号: (n+1)'b1 小括号:

  9. SpringCloudEureka上篇

    SpringCloudEureka上篇 本文学习自<<重新定义SpringCloud>> Eureka简介 Eureka是Netflix公司开源的一款服务发现组件,该组件提供的 ...

  10. 【服务器数据恢复】RAID6数据恢复案例

    服务器数据恢复环境:一台Web服务器中有一组由8块磁盘组建的raid6磁盘阵列,用来运行数据库和存储普通办公文件. 服务器故障:服务器raid6磁盘阵列中有两块硬盘离线,但是管理员没有注意到这种情况, ...