废话不多说 ,实现一个树型结构体首先得需要一个对象来装载需要的结构数据;

   // idprivate Integer id;// 节点名称private String name;// 选中状态private boolean checked;// 子节点private List<TreeNode> children;// 是否可选 true:不可选  // 废弃private boolean disabled;// logoprivate String icon;// 节点是否展开private boolean open;//父idprivate Integer pId;

再把我映射数据库对象得菜单结构体粘贴出来

@Id@GeneratedValue(strategy = IDENTITY)@Column(name = "menu_id", unique = true, nullable = false)private Integer menuId;@Column(name = "pid", length = 11)private Integer pid;@Column(name = "menu_name", length = 30)private String menuName;@Column(name = "menu_url", length = 50)private String menuUrl;@Column(name = "menu_type", length = 1)private Integer menuType;@Column(name = "admin_id", length = 11)private Integer adminId;@Column(name = "icon", length = 100)private String icon;@Column(name = "tips", length = 100)private String tips;@Column(name = "order_show", length = 8)private Integer order;

实现方法

     //把当前数据重新规整为符合树型结构的数据结构 //menuAllList  是数据库查出来得菜单List<TreeNode> resultSet = null;if (menuAllList != null && menuAllList.size() > 0) {resultSet = new ArrayList<TreeNode>();TreeNode node = null;for (Menu obj : menuAllList) {node = new TreeNode();if (obj.getPid() == 0){//夫级别node.setIcon("../../../static/img/parent_menu.png");}if (obj.getPid() == 0 || !(obj.getPid() > 0)) {node.setId(obj.getMenuId());node.setName(obj.getMenuName());node.setChildren(getChildNode(menuAllList, obj.getMenuId(), _list));node.setChecked(false);node.setpId(obj.getPid());//根据自己业务去填充默认值node.setDisabled(false);resultSet.add(node);}}}/*** 获取所有权限列表-查询子节点*/private List<TreeNode> getChildNode(List<Menu> list, Integer parentId, List<Integer> _list) {List<TreeNode> tem = new ArrayList<TreeNode>();TreeNode node = null;for (Menu obj : list) {if (obj.getPid() != 0 && obj.getPid() > 0) {if (obj.getPid() == parentId) {node = new TreeNode();node.setId(obj.getMenuId());node.setName(obj.getMenuName());node.setChildren(getChildNode(list, obj.getMenuId(), _list));node.setChecked(false);node.setIcon("../../../static/img/child_menu.png");if (_list != null && _list.size() > 0) {if (_list.contains(obj.getMenuId())) {node.setChecked(true);node.setOpen(true);}}node.setDisabled(false);tem.add(node);}}}if (tem.size() > 0) {return tem;}return null;}

这个代码片段是前端实现得

一步一步实现一个Java树形结构体方法相关推荐

  1. java树形结构查询优化

    java树形结构查询优化 public class TreeTest {// 定义全局变量,统计地柜中总的循环次数private static int time;/*** 初始化数据,模拟从数据查询出 ...

  2. 使用递归算法结合数据库解析成java树形结构

    使用递归算法结合数据库解析成java树形结构 1.准备表结构及对应的表数据 a.表结构: create table TB_TREE ( CID NUMBER not null, CNAME VARCH ...

  3. java 树状数据算法_使用递归算法结合数据库解析成Java树形结构的代码解析

    这篇文章主要介绍了使用递归算法结合数据库解析成Java树形结构的代码解析的相关资料,需要的朋友可以参考下 1.准备表结构及对应的表数据 a.表结构:create table TB_TREE ( CID ...

  4. Java树形结构模糊搜索,模糊匹配

    Java树形结构模糊搜索,模糊匹配 相关类结构 核心代码 辅助类--树结构基类 辅助类--测试类 测试代码 发现含有州的市有 43 个 相关类结构 核心代码 package com.demo;impo ...

  5. Java树形结构的实现

    Java树形结构的实现 文章目录 Java树形结构的实现 TreeNode接口 工具类TreeUtil 使用 TreeNode接口 public interface TreeNode<T> ...

  6. 数据库树形结构存储方法的选择

    树形结构存储方法的选择 简单的方法跟踪多级回复构成的树形分支:parent_id 一开始的思路 使用parent_id跟踪分支 使用先找出所有节点,按照一定顺序整合成树形结构 缺陷: 在深度过深时仅用 ...

  7. Java树形结构筛选

    Java树形筛选算法 提示:使用递归方法,个人在项目中有使用到,有问题希望指出: 使用场景:当我们得到一个树形结构数据时,可能需要在树形结构上对数据进行筛选,例如通过文件夹(文件)名称模糊查询相关的文 ...

  8. Java树形结构解析

    由于工作中好多地方需要树状结构数据,在参考了网上递归实现和数据库存储过程实现,都不太满意.突然想到zTree也有解析该类数据的要求,所以在阅读了zTree源码的前提了,按照他的实现原理,写了一个jav ...

  9. java jni 结构体_JAVA 的JNI,传参为结构体问题: 我在网上找的资料://返回一个结构 public native DiskInfo getStruct();...

    Java代码:classDiskInfo{//名字publicStringname;//序列号publicintserial;}//返回一个结构publicnativeDiskInfogetStruc ...

最新文章

  1. sqlite数值长度超过7位出错_数值计算方法 第一章 绪论
  2. TCP/IP详解--学习笔记(3)-IP协议,ARP协议,RARP协议
  3. 科大星云诗社动态20210305
  4. DeepMind 的马尔可夫决策过程(MDP)课堂笔记
  5. python开发视频播放器_Python应用03 使用PyQT制作视频播放器实例
  6. 39. 恢复旋转排序数组
  7. JS组件系列——两种bootstrap multiselect组件大比拼
  8. 四大银行(工建农中)大数据进展如何?
  9. [计算机网络] P2P 协议
  10. 测试狗:Zview软件拟合电化学阻抗谱教程
  11. Solr进阶之拼写纠错功能的实现基础拼音
  12. Java项目:SSM高校教职工差旅报销管理系统
  13. java 万年历_改进java万年历,前几天看到别人写的java万年历,其中不足之处多多...
  14. 微信小程序 启动页自动跳转
  15. 最小二乘法简解及空间直线拟合
  16. 12306 并不是我们想的那样
  17. Linkerd实战(2)示例详解
  18. 工程材料学习2——第一章 材料的结构与性能特点
  19. 【SDPTWVRP】基于matlab头脑风暴算法求解带时间窗和同时取送货车辆路径问题【含Matlab源码 1990期】
  20. 异构数据库中间件sequoia(c-jdbc)初体验(1.安装试运行)

热门文章

  1. 【题库】计算机二级选择题
  2. MATLAB循环结构与嵌套循环
  3. 太阳能光伏系统新能源环保类企业公司通用官网/蓝色大气产品案例展示
  4. Vehicle Spy 3软件添加license文件
  5. html 重置按钮如何居中,如何设置html 表单按钮的位置,如居中,急?
  6. 搭建开源Jumpserver跳板机
  7. ECMAScript5.1及其新增API简介
  8. 极客日报第84期:微信Mac版更新:在电脑上刷朋友圈;领英暂停中国境内新用户注册;Git 恶意仓库可以在克隆时执行远程代码
  9. OpenLayers基础教程——popup弹出框
  10. 程序员的春节对联,你喜欢哪一副?