java三级菜单遍历
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三级菜单遍历的更多相关文章
- day1作业--三级菜单
作业概述: 写一个三级菜单 实现如下功能: (1)可依次选择进入各子菜单 (2)在每一级按“b”都可以返回上一级,按“q"都可以退出 流程图: readme: 简介: three_menu. ...
- python三级菜单
#-*- coding:utf-8 -*-#Author:gxli #一级菜单项def menu(): #遍历字典dic一级菜单 print('-----------一级菜单------------- ...
- Android--简单的三级菜单
关于这个菜单应该在很多播放器应用里面可以看见,直接先上两张效果图吧,一张是该Demo的效果图,一张是优酷手机客户端的效果图. ...
- Python学习之编写三级菜单(Day1,作业二)
作业二:多级菜单 三级菜单 可依次进入各子菜单 在各级菜单中输入B返回上一级Q退出程序 知识点:字典的操作,while循环,for循环,if判断 思路: 1.开始,打印一级菜单让用户进行选择(可以输入 ...
- android 三级菜单 BaseExpandableListAdapter
在网上搜了非常长时间.没有找到合适的Android三级菜单.所以就自己动手写了一个,主要使用了BaseExpandableList来实现,通过三个布局文件来完毕相应的菜单项,详细实现请參照下图. wa ...
- 我的Python成长之路---第一天---Python基础(作业2:三级菜单)---2015年12月26日(雾霾)
作业二:三级菜单 三级菜单 可一次进入各个子菜单 思路: 这个题看似不难,难点在于三层循环的嵌套,我的思路就是通过flag的真假来控制每一层的循环的,简单来说就是就是通过给每一层循环一个单独的布尔变量 ...
- Python递归 — — 二分查找、斐波那契数列、三级菜单
一.二分查找 二分查找也称之为折半查找,二分查找要求线性表(存储结构)必须采用顺序存储结构,而且表中元素顺序排列. 二分查找: 1.首先,将表中间位置的元素与被查找元素比较,如果两者相等,查找结束,否 ...
- JavaEE权限管理系统的搭建(六)--------使用拦截器实现菜单URL的跳转权限验证和页面的三级菜单权限按钮显示
本小结讲解,点击菜单进行页面跳转,看下图,点击管理员列表后会被认证拦截器首先拦截,验证用户是否登录,如果登录就放行,紧接着会被权限验证拦截器再次拦截,拦截的时候,会根据URL地址上找到对应的方法,然后 ...
- 老男孩Day1作业(二):三级菜单
作业需求: 1. 运行程序输出第一级菜单 2. 选择一级菜单某项,输出二级菜单,同理输出三级菜单 3. 菜单数据保存在文件中 4. 让用户选择是否要退出 5. 有返回上一级菜单的功能 1)编写思路 编 ...
- jquery 根据后台传递过来的三维数组动态生成三级菜单
根据后台传递过来的三维数组动态生成三级菜单 <!DOCTYPE html> <html lang="en"> <head> <meta c ...
随机推荐
- vscode代码片段
{ "Print to console": { "prefix": "vue2", "body& ...
- 关于pytest生成测试报告
之前用pytest集成allure,记录的很清楚确实很好,但是我不知道怎么把生成的所有结果通过邮箱发送 可以使用pytest-html生成的html是这样的 也很清楚 但是!!!!!!!!!!!!!! ...
- pytorch gpu安装cuda11.*
conda install pytorch==1.12.0 torchvision==0.13.0 torchaudio cudatoolkit=11.3
- Vuforial 使用小计
1. 在使用扫图功能的时候, 上传图片审核处,要根据图片真实的宽度尺寸设置宽度. 2.做物体识别时,识别的物体最好是一个长方体或正方体,这样识别度高一些. 3.如果是其它物体识别要保证物体大一些,身体 ...
- MAC系统连接Windows共享文件的方法:
MAC系统连接Windows共享文件的方法: 1.首先先确认Windows系统下已开启共享.并且两台电脑之间局域网已通. 2.苹果MAC系统,点击桌面.打开顶部菜单 "前往". 3 ...
- HID类GamePad和兼容HID设备报表描述符
目录 1.12版本规范的GamePad参考报表描述符,报表格式如下图. 用CH582模拟GamePad,在电脑上显示的HID接口↓ 报表描述符↓,其他描述符可以直接参考JoyStick相关一文,改一下 ...
- Gitlab迁移(亲测)
1. 概述 当前gitlab部署在k8s内,根据基础设施设计此处不合理,需将gitlab迁移至主机部署的gitlab 当前位置:k8s 集群 迁移后位置:云主机部署gitlab 2. Gitlab从K ...
- 使用tkinter开发的一款登录和注册图形化界面
目录 项目介绍 登录功能 登录界面展示 登录主要功能 登录部分源码 注册功能 注册界面展示 注册主要功能 注册部分源码 源码地址 项目介绍 使用tkinter开发的一款登录和注册图形化界面 使用tki ...
- oracle导出csv文件后导入mysql
场景: oracle数据库中有与mysql同名表,需要将oracle表数据导入mysql,需要手工操作 工具: navicat premium 解决方案: 1.使用plsql工具从oracle导出cs ...
- 使用Android studio配置软件签名,并在车机安装
系统级APP,可在Androidmanifest.xml中配置属性,并使用系统级签名. 1. 签名方式 1.1 bulid.gradle(:app)中添加签名信息 1.2 使用Android stud ...