这里来讲一下后台java如何构造多叉树,这样前台就可接收到数据递归构造树形菜单了。

我们来理一下如何实现构造多叉树的逻辑吧,其实整个问题概括起来就是
1、构造一个实体类,用来存储节点,所以我们构造的需要四个对象(id,pid,name,和chirenList)
2、构造菜单结构
3、构造子菜单,如此循环,通过pid判断上级菜单
具体实现:
1、这里构造Tree.java实体类
package com.tcl.jr.crm.entity;
/**
* 类名称:Tree
* 类描述:树形结构
*/
public class Tree {
private String id;
private String pId;
private String name;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getpId() {
return pId;
}
public void setpId(String pId) {
this.pId = pId;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "Tree [id=" + id + ", pId=" + pId + ", name=" + name + "]";
}
}
2、封装树形结构类,这里我封装成一个通用的工具类,方便项目中使用,MenuTreeUtil.java,完整代码如下,可直接复制使用:
package com.tcl.jr.crm.util;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import com.tcl.jr.crm.entity.Tree;
/**
* 类名称:MenuTreeUtil
* 类描述:递归构造树型结构
*/
public class MenuTreeUtil {
public static Map<String,Object> mapArray = new LinkedHashMap<String, Object>();
public List<Tree> menuCommon;
public List<Object> list = new ArrayList<Object>();
public List<Object> menuList(List<Tree> menu){
this.menuCommon = menu;
for (Tree x : menu) {
Map<String,Object> mapArr = new LinkedHashMap<String, Object>();
if(x.getpId()=="0"){
mapArr.put("id", x.getId());
mapArr.put("name", x.getName());
mapArr.put("pid", x.getpId());
mapArr.put("childList", menuChild(x.getId()));
list.add(mapArr);
}
}
return list;
}
public List<?> menuChild(String id){
List<Object> lists = new ArrayList<Object>();
for(Tree a:menuCommon){
Map<String,Object> childArray = new LinkedHashMap<String, Object>();
if(a.getpId() == id){
childArray.put("id", a.getId());
childArray.put("name", a.getName());
childArray.put("pid", a.getpId());
childArray.put("childList", menuChild(a.getId()));
lists.add(childArray);
}
}
return lists;
}
}
3、最后在控制台请求方法调用数据就行了,在controller的方法如下:
/**
* 显示APP树形结构
*/
@RequestMapping(value = { "getAPPTree" }, produces = "text/html;charset=UTF-8")
@ResponseBody
public String getAPPTree(HttpServletRequest request, HttpServletResponse response) throws Exception {
Map<String, Object> returnmap = new HashMap<>();
MenuTreeUtil menuTree = new MenuTreeUtil();
PageData pd = this.getPageData();
try {
//这里的方法是根据前台的机构类型代码来查找数据库数据的,这里不多加解释,因人而异
List<Tree> list = dataDicService.buildTree(pd.getString("instType"));
List<Object> menuList = menuTree.menuList(list);
//区别于web端,这边APP端list不能转为json格式,直接将list传给前台,转成json对象的话vuejs前台无法识别渲染
returnmap.put("list", menuList);
} catch (Exception e) {
logger.error(e.getMessage());
}
return JsonMapper.toJsonString(returnmap);
}
4、然后前台ajax调用第三部的接口方法就而已请求到所需的数据,如何渲染成好的前台页面,参照我另一篇文章:vuejs使用递归组件实现树形目录
java构造树形菜单数据就说到这里啦,希望对大家有帮助,我的分享一般都是特别详细的,除了涉及项目隐私之外,是不会对大家有所保留的哟,也希望大家多多支持。
# java
# 无限层级树形
# 无限层级树形菜单
# 如何实现java递归 处理权限管理菜单树或分类
# Java递归遍历树形结构的实现代码
# java 实现简单圣诞树的示例代码(圣诞节快乐)
# Java Swing中的表格(JTable)和树(JTree)组件使用实例
# Java构建树形菜单的实例代码(支持多级菜单)
# Java Swing树状组件JTree用法实例详解
# Java遍历输出指定目录、树形结构所有文件包括子目录下的文件
# JSON复杂数据处理之Json树形结构数据转Java对象并存储到数据库的实现
# Java实现的决策树算法完整实例
# java分类树
# 我从2s优化到0.1s
# 递归
# 都是
# 说到
# 所需
# 会对
# 就可
# 实体类
# 因人而异
# 可直接
# 树型
# 第三部
# 多加
# 转成
# 大家多多
# 如何实现
# 方法如下
# 无法识别
# 就行了
# setpId
# getpId
相关文章:
如何通过西部数码建站助手快速创建专业网站?
如何获取上海专业网站定制建站电话?
如何选择可靠的免备案建站服务器?
制作销售网站教学视频,销售网站有哪些?
已有域名能否直接搭建网站?
如何零基础开发自助建站系统?完整教程解析
在线制作视频的网站有哪些,电脑如何制作视频短片?
如何在IIS管理器中快速创建并配置网站?
如何用5美元大硬盘VPS安全高效搭建个人网站?
微课制作网站有哪些,微课网怎么进?
香港服务器网站测试全流程:性能评估、SEO加载与移动适配优化
建站主机系统SEO优化与智能配置核心关键词操作指南
小型网站制作HTML,*游戏网站怎么搭建?
小米网站链接制作教程,请问miui新增网页链接调用服务有什么用啊?
如何将凡科建站内容保存为本地文件?
如何注册花生壳免费域名并搭建个人网站?
如何快速搭建高效可靠的建站解决方案?
如何配置FTP站点权限与安全设置?
c++23 std::expected怎么用 c++优雅处理函数错误返回【详解】
广州网站设计制作一条龙,广州巨网网络科技有限公司是干什么的?
广东企业建站网站优化与SEO营销核心策略指南
建站之星安装需要哪些步骤及注意事项?
视频网站app制作软件,有什么好的视频聊天网站或者软件?
如何在新浪SAE免费搭建个人博客?
北京企业网站设计制作公司,北京铁路集团官方网站?
高端云建站费用究竟需要多少预算?
建站主机与服务器功能差异如何区分?
定制建站是什么?如何实现个性化需求?
如何快速搭建自助建站会员专属系统?
深入理解Android中的xmlns:tools属性
深圳网站制作公司好吗,在深圳找工作哪个网站最好啊?
完全自定义免费建站平台:主题模板在线生成一站式服务
长沙企业网站制作哪家好,长沙水业集团官方网站?
购物网站制作费用多少,开办网上购物网站,需要办理哪些手续?
大连企业网站制作公司,大连2025企业社保缴费网上缴费流程?
北京网站制作的公司有哪些,北京白云观官方网站?
东莞专业网站制作公司有哪些,东莞招聘网站哪个好?
c++ stringstream用法详解_c++字符串与数字转换利器
湖南网站制作公司,湖南上善若水科技有限公司做什么的?
清单制作人网站有哪些,近日“兴风作浪的姑奶奶”引起很多人的关注这是什么事情?
天河区网站制作公司,广州天河区如何办理身份证?需要什么资料有预约的网站吗?
如何用AWS免费套餐快速搭建高效网站?
代购小票制作网站有哪些,购物小票的简要说明?
成都网站制作公司哪家好,四川省职工服务网是做什么用?
网站微信制作软件,如何制作微信链接?
魔方云NAT建站如何实现端口转发?
北京营销型网站制作公司,可以用python做一个营销推广网站吗?
怎么制作一个起泡网,水泡粪全漏粪育肥舍冬季氨气超过25ppm,可以有哪些措施降低舍内氨气水平?
建站之星后台管理:高效配置与模板优化提升用户体验
天津个人网站制作公司,天津网约车驾驶员从业资格证官网?
*请认真填写需求信息,我们会在24小时内与您取得联系。