java tree 树的代码实现 菜单功能等

在开发后台管理系统过程中,菜单功能是必定实现的一个功能,因此针对此功能做个笔记:

  • 树统一接口定义
  • 默认树类的创建
  • 实现树状列表工具类

统一接口定义

public interface Tree {String getLabel();  //名称Integer getPid(); //父级idInteger getId();  //自身idString getPath(); //路径}
  • 定义统一tree的接口 为后面做扩展

默认树的实现类

public class DefaultTree<T extends DefaultTree> extends BaseDO implements Tree {private Integer pid;private String label;private String path;@Transientprivate List<T> children =new ArrayList<>();
  • 实现tree接口

tree的工具实现

public  class TreeUtil {public static <T extends DefaultTree> List<T> build(List<T> trees , Integer pid) {Map<Integer, List<T>> map = new HashMap<>();for (T t : trees) {Integer parentId = t.getPid();List<T> childrens = map.get(parentId);if (childrens == null) {childrens = new ArrayList<>();map.put(parentId, childrens);}childrens.add(t);}List<T> treeList = new ArrayList<>();childBuild(map,pid,treeList);return  treeList ;}private  static <T extends DefaultTree> void  childBuild(Map<Integer, List<T>> map, Integer pid , List<T> treeList){List<T> tList = map.get(pid);if(!CollectionUtils.isEmpty(tList)){for(T tree : tList){treeList.add(tree);childBuild(map ,tree.getId(), tree.getChildren());}}}
}
  • 此工具类是实现列表到树状列表的转换
    在common包的base和utils包中
    github代码链接

java tree 树的代码实现相关推荐

  1. 数据结构系列——Java后缀树实现代码

    上一篇文章介绍了什么是后缀树以及后缀树的应用场景,同时结合Ukkonen算法论文细述了如何在O(n)时间内构建一颗后缀树,这一篇详细介绍如何使用Java实现的Ukkonen后缀树构建算法.完整代码看这 ...

  2. java打印文件树的代码

    输出的结构类似于linux下的tree命令如下: 原创不易,转载请注明出处:java打印文件树的代码 package com.zuidaima.file;import java.io.File; im ...

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

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

  4. 超级详细树讲解三 —— B树、B+树图解+代码

    首先很高兴你看到了这篇文章,这篇文章可能会花费你很长很长的时间去看,但是这篇文章包括的内容绝对足够你对树的一个系统性的学习.为什么要写这篇文字呢?因为自己在学习树的时候,有些博客只有图解,有些博客只有 ...

  5. 在java中写出html代码,在java里写html代码

    在java里写html代码 [2021-02-09 07:31:38]  简介: php去除nbsp的方法:首先创建一个PHP代码示例文件:然后通过"preg_replace("/ ...

  6. java实现 - 树的层序遍历

    树: 树实体结构: @Data public class Tree {//树的data值private String dataStr;//树的第一个孩子节点private Tree firstChil ...

  7. 如何在vs中创建r树索引代码_线段树详解与实现

    此篇文章用于记录<玩转数据结构>课程的学习笔记 什么是线段树 线段树也被称为区间树,英文名为Segment Tree或者Interval tree,是一种高级的数据结构.这种数据结构更多出 ...

  8. 数据结构JAVA实现——树

    数据结构JAVA实现--树 数据结构java实现--树的双亲表示法 数据结构Java实现--树|N叉树之孩子双亲表示法--顺序存储结构+链表 无序二叉树的实现 前序线索二叉树,中序线索二叉树 后续线索 ...

  9. Element tree树组件 鼠标双击事件

    需求 双击 tree上的子节点,把节点文字显示在输入框中(这里简化一下,双击 tree 显示文字即可,省略 $emit 那一步) 注解:props 可以接收 defaultExpandAll(是否默认 ...

最新文章

  1. OpenCV基础知识入门
  2. 【遥感数字图像处理】实验:Erdas 软件的认识与使用
  3. 关于Github的那点事儿
  4. 草稿 12月第2周 排课
  5. python php 序列化,序列化和反序列化的详细介绍
  6. 工作资讯001---行业思维模式及经典语录随时更新
  7. 以太坊应用网络项目LUKSO通过可逆ICO筹集1800万美元
  8. 随手记android面试题,synchorinzed的一个面试题
  9. Spark sample入门到精通
  10. python源码中的学习笔记_第6章_元组
  11. codeforces 286E Ladies' Shop
  12. 8个Java实践项目:平均半个小时就可干完~
  13. C#SHA1算法及注意事项
  14. Scrapy爬取并分析CSDN热门文章标题
  15. linux中tar命令怎么用,linux tar命令使用详解
  16. Mybatis对Double类型的字符串进行范围查询
  17. js面试题:fn.call.call.call.call(fn2) 解析
  18. python视频补帧_视频补帧软件(DAIN APP)
  19. spamhaus反垃圾邮件联盟黑名单PBL申诉详细步骤
  20. 图片识别不了小程序怎么办_图片转文字【小程序】

热门文章

  1. div横排 html_HTML+CSS-如何定义让两个div横向排列
  2. 很多人问我为什么要奋斗
  3. 无法添加此网站的应用,扩展程序和用户脚本
  4. Navicat 导入向导报错
  5. yaw pitch row欧拉角理解
  6. 论文阅读:RAFT: Recurrent All-Pairs Field Transforms for Optical Flow
  7. ChatGPT Plus最新订阅教程,现在开通Plus超简单!国卡也能开通!
  8. linux sudo版本查询,如何查看linux版本
  9. VS Code智能提示功能之Typings
  10. 新版标准日本语中级_第三课