java递归树形菜单显示
今天写权限整好涉及到一些菜单的显示,最先想到的是递归遍历输出,但是呢在网上找了很多有关的资料没有符合自己需求的所以就自己写了一个,如果觉得靠谱
请点点关注!!!赞一个
首先看一些设计的数据库设计

菜单的id menuId
菜单的名称 menuName
菜单的地址 url
菜单的父级别 parent
菜单的编码 menuCode
比较简单的设计:
闲话不多说直接上代码
实体类 如下:

此处省略 GET ()SET()方法
注意:
这里多了个 childrs集合 因为我们要进行递归遍历 把每个菜单的子元素都显示出来 根据自己的需求选好集合我用的是List如果你希望唯一就用set集合
这里采用List
接下来我们来看递归部分如下:

简单的几行代码就完成的递归的遍历所有菜单的 每个菜单又会携带自己的子子孙孙菜单的 这样的结果是你想到要的么????
接下来我们来解释一下这些代码的意义
menuMapper.conditionleveMenu(menu.getMenuId());
第一次进来,获取的是当前的一级元素
然后把一级元素放入我当前菜单的子元素中
因为:我的子元素的下面很有可能还有子元素 所以我又把上面的集合元素循环的进行的遍历
for(Menu men : list){
然后这里采用的是递归的算法 recursion(menu)传入当前的菜单
}
这个方法主要做了几件事
1查询当前菜单下面的所有子元素菜单
2如果有子元素菜单 添加到当前菜单的子元素集合中
添加完毕 我们要考虑的是万一子元素集合下面还有菜单元素怎么办
所以进行了遍历
3循环遍历子元素集合进行重复操作 放入菜单 然后进入方法
1查询当前菜单下面的所有子元素
2如果有子元素菜单 添加到当期那菜单的子元素集合中
3循环遍历子元素集合进行进行重复操作.......同上
直到循环完毕
主要代码 就是这些 最重要的是实现了这个功能 细节留给你们开阔大脑去想把!!嘿嘿 关于本文有什么问题可以在下面留言交流,如果您觉得本文对您有帮助,可以点击下面的 推荐 支持一下我,博客一直在更新,欢迎 关注 。
java递归树形菜单显示的更多相关文章
- java构建树形菜单递归工具类
1.设计菜单实体 import java.util.List; public class Menu { //菜单id private Long id; //父节点id private Long par ...
- java 递归 树形
//菜单树形结构 public JSONArray treeMenuList(JSONArray menuList, int parentId) { JSONArray childMenu = new ...
- java递归构建菜单树
package testSimple; import java.util.ArrayList; import java.util.List; public class BuildTree { publ ...
- c# 递归树形菜单
首先创建模型类Menus public class Menus { //菜单Id public int Id { get; set; } //菜单名 public string MenuName { ...
- java后端树形菜单使用递归方法
数据库的设计 使用ssm 实体类 mapper映射文件查询出所有的菜单 使用递归方法
- 用dtree实现树形菜单 dtree使用说明
http://www.jb51.net/article/28566.htm 准备工作: 请从脚本之家http://www.jb51.net/jiaoben/31974.html下载dtree.zip文 ...
- Vue.js 递归组件实现树形菜单
最近看了 Vue.js 的递归组件,实现了一个最基本的树形菜单. 项目结构: main.js 作为入口,很简单: import Vue from 'vue' Vue.config.debug = tr ...
- java树形菜单实现
java树形菜单实现 公司表: 部门表: 实体类: public class Node { private Integer companyId;//公司id private String compan ...
- 用Vue.js递归组件构建一个可折叠的树形菜单
在Vue.js中一个递归组件调用的是其本身,如: Vue.component('recursive-component', { template: `<!--Invoking myself! ...
随机推荐
- 跨域问题与SpringBoot解决方案
什么是跨域? 定义:浏览器从一个域名的网页取请求另一个域名下的东西.通俗点说,浏览器直接从A域访问B域中的资源是不被允许的,如果想要访问,就需要进行一步操作,这操作就叫"跨域".例 ...
- Android 7.0终极开发者预览版全攻略!
近日,Google的工程部副总裁Dave Burke在官方博客上正式发布开发者预览版5,此预览版是android 7.0 “牛轧糖”正式发布前最后一个预览版,同时也是在性能.功能上等多方面的表现上最接 ...
- 牛客-DongDong数颜色 及其相似题
大佬博客 ps:在牛客上做到这题不会,学会之后补了两道相关题.顺便记录一下. 牛客-DongDong数颜色 sol:dfs序+莫队,先把树上的点标上dfs序,因为子树的dfs序是连续的,所以子树可以表 ...
- python的可迭代对象
今日所得 迭代器 可迭代对象 迭代器对象 for循环内部原理 生成器 生成器表达式 内会函数 面对过程编程 迭代器 迭代就是指更新换代的过程,要重复进行,而且每次的迭代都必须基于上一次的结果. 我们使 ...
- jQuery插件开发小结
jQuery插件开发规范 1. 使用闭包 (function($) { // Code goes here })(jQuery); 这是来自jQuery官方的插件开发规范要求,使用这种编写方式有什么好 ...
- 一致性 hash 算法( consistent hashing )及java实现
consistent hashing 算法早在 1997 年就在论文 Consistent hashing and random trees 中被提出,目前在cache 系统中应用越来越广泛: 1 基 ...
- Klotski's Blog
教材: 唐朔飞 编著 "计算机组成原理(第2版)"高等教育出版社 2008年1月 习题指导教材: 唐朔飞 编著 "计算机组成原理–学习指导与习题解答(第2版)" ...
- 使用JavaScript获取前一周的日期
在开发当中遇到了一个关于echarts初始展示当前前7天的数据,正好记录一下如何获取前"n"天的日期, 返回时间格式:2020-02-02 // 返回前number天的日期格式为2 ...
- <luogu1347>排序
本来打算当打了个拓扑的板子 后来发现并不只是个板子 差不多 管他呢 #include<cstdio> #include<cstring> #include<iostrea ...
- JSF技术web.xml配置解析
对Java tutorial-examples中jsf hell1的web.xml配置文件的解析 <?xml version="1.0" encoding="UTF ...