JAVA递归生成树形菜单的实现方法是什么
发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,今天小编给大家分享一下JAVA递归生成树形菜单的实现方法是什么的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下
千家信息网最后更新 2026年11月02日JAVA递归生成树形菜单的实现方法是什么
今天小编给大家分享一下JAVA递归生成树形菜单的实现方法是什么的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。
递归生成一个如图的菜单,编写两个类数据模型Menu、和创建树形的MenuTree。通过以下过程实现:
1.首先从菜单数据中获取所有根节点。
2.为根节点建立次级子树并拼接上。
3.递归为子节点建立次级子树并接上,直至为末端节点拼接上空的"树"。

首先,编写数据模型Menu。每条菜单有自己的id、父节点parentId、菜单名称text、菜单还拥有次级菜单children。
import java.util.List;public class Menu { private String id; private String parentId; private String text; private String url; private String yxbz; private List创建树形结构的类MenuTree。方法getRootNode获取所有根节点,方法builTree将根节点汇总创建树形结构,buildChilTree为节点建立次级树并拼接上当前树,递归调用buildChilTree不断为当前树开枝散叶直至找不到新的子树。完成递归,获取树形结构。
import java.util.ArrayList;import java.util.List;public class MenuTree { private List最后,插入一些数据试试效果。得到的json就可以生成图一菜单了。
import java.util.ArrayList;import java.util.List;import com.alibaba.fastjson.JSON;public class Hello { public static void main(String []args) { List menuList= new ArrayList(); /*插入一些数据*/ menuList.add(new Menu("GN001D000","0","系统管理","/admin","Y")); menuList.add(new Menu("GN001D100","GN001D000","权限管理","/admin","Y")); menuList.add(new Menu("GN001D110","GN001D100","密码修改","/admin","Y")); menuList.add(new Menu("GN001D120","GN001D100","新加用户","/admin","Y")); menuList.add(new Menu("GN001D200","GN001D000","系统监控","/admin","Y")); menuList.add(new Menu("GN001D210","GN001D200","在线用户","/admin","Y")); menuList.add(new Menu("GN002D000","0","订阅区","/admin","Y")); menuList.add(new Menu("GN003D000","0","未知领域","/admin","Y")); /*让我们创建树*/ MenuTree menuTree =new MenuTree(menuList); menuList=menuTree.builTree(); /*转为json看看效果*/ String jsonOutput= JSON.toJSONString(menuList); System.out.println(jsonOutput); }} 补充:java递归生成树形结构菜单
一、mysql表,数据自行准备
CREATE TABLE `sys_menu` ( `id` int(11) NOT NULL AUTO_INCREMENT, `pid` bigint(20) DEFAULT NULL, `title` varchar(255) CHARACTER SET utf8 DEFAULT NULL, `path` varchar(255) CHARACTER SET utf8 DEFAULT NULL, `level` int(11) DEFAULT NULL, `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', PRIMARY KEY (`id`)) ENGINE=InnoDB AUTO_INCREMENT=200 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci
二、创建对应的实体类
public class Menu implements Serializable { private static final long serialVersionUID = -5990021029947688358L; private Integer id; private String title;//菜单标题 private String path;//路径 private Integer pid;//父菜单ID 一级菜单pid为null private Integer level;//级别,排序用 private List children = new ArrayList(); public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } public String getPath() { return path; } public void setPath(String path) { this.path = path; } public Integer getPid() { return pid; } public void setPid(Integer pid) { this.pid = pid; } public Integer getLevel() { return level; } public void setLevel(Integer level) { this.level = level; } public List getChildren() { return children; } public void setChildren(List children) { this.children = children; }} 三、递归组装树形结构函数实现
/** * @方法名: parseMenuTree
* @描述: 组装菜单
* @param list 数据库里面获取到的全量菜单列表 * @return */ public static ListparseMenuTree(List list){ List result = new ArrayList (); // 1、获取第一级节点 for (Menu menu : list) { if(null == menu.getPid()) { result.add(menu); } } // 2、递归获取子节点 for (Menu parent : result) { parent = recursiveTree(parent, list); } return result; } public static Menu recursiveTree(Menu parent, List list) { for (Menu menu : list) { if(Objects.equals(parent.getId(),menu.getPid())) { menu = recursiveTree(menu, list); parent.getChildren().add(menu); } } return parent; }
四、从数据库获取菜单数据,调用组装菜单函数生成树形结构的数据
public static void main(String[] args) { List list = new ArrayList(); //TODO 这里从数据库获取全量菜单后放到list中 //树形结构数据生成 List result = parseMenuTree(list); System.out.println(JSONObject.toJSONString(result)); } 以上就是"JAVA递归生成树形菜单的实现方法是什么"这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注行业资讯频道。
菜单
树形
数据
节点
递归
结构
生成
方法
次级
知识
篇文章
数据库
子树
内容
函数
效果
时间
模型
用户
系统
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
互联网中国科技
互联网 科技创业
一五八零互联网科技
人人互联网科技是培训
新华互联网科技校企合作
中国最先进互联网科技公司
海南科技产业互联网平台
互联网实体化科技化
互联网金融科技公司干啥的
互联网科技项目计划书材料类
厦门比较好的科技互联网公司
重庆互联网医院沙龙医盟信息科技
互联网科技公司实习生
恒生互联网科技指数跳水
郑州欣桑互联网科技有限公司
东营紫格互联网科技
福州德业互联网科技
杭州融税互联网科技有限公司
互联网金融金融科技
前海云享互联网科技
智能科技公司是互联网公司吗
哈尔滨新华互联网科技学院
科技互联网的估值
承德科技产业互联网发展
常德市电业局互联网科技部
科技互联网大厂
武汉健翔互联网络科技有限公司
世界互联网领先科技成果获奖
互联网营销推广黑科技
互联网科技平台产品运营