java tree 树的代码实现
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 树的代码实现相关推荐
- 数据结构系列——Java后缀树实现代码
上一篇文章介绍了什么是后缀树以及后缀树的应用场景,同时结合Ukkonen算法论文细述了如何在O(n)时间内构建一颗后缀树,这一篇详细介绍如何使用Java实现的Ukkonen后缀树构建算法.完整代码看这 ...
- java打印文件树的代码
输出的结构类似于linux下的tree命令如下: 原创不易,转载请注明出处:java打印文件树的代码 package com.zuidaima.file;import java.io.File; im ...
- java 树状数据算法_使用递归算法结合数据库解析成Java树形结构的代码解析
这篇文章主要介绍了使用递归算法结合数据库解析成Java树形结构的代码解析的相关资料,需要的朋友可以参考下 1.准备表结构及对应的表数据 a.表结构:create table TB_TREE ( CID ...
- 超级详细树讲解三 —— B树、B+树图解+代码
首先很高兴你看到了这篇文章,这篇文章可能会花费你很长很长的时间去看,但是这篇文章包括的内容绝对足够你对树的一个系统性的学习.为什么要写这篇文字呢?因为自己在学习树的时候,有些博客只有图解,有些博客只有 ...
- 在java中写出html代码,在java里写html代码
在java里写html代码 [2021-02-09 07:31:38] 简介: php去除nbsp的方法:首先创建一个PHP代码示例文件:然后通过"preg_replace("/ ...
- java实现 - 树的层序遍历
树: 树实体结构: @Data public class Tree {//树的data值private String dataStr;//树的第一个孩子节点private Tree firstChil ...
- 如何在vs中创建r树索引代码_线段树详解与实现
此篇文章用于记录<玩转数据结构>课程的学习笔记 什么是线段树 线段树也被称为区间树,英文名为Segment Tree或者Interval tree,是一种高级的数据结构.这种数据结构更多出 ...
- 数据结构JAVA实现——树
数据结构JAVA实现--树 数据结构java实现--树的双亲表示法 数据结构Java实现--树|N叉树之孩子双亲表示法--顺序存储结构+链表 无序二叉树的实现 前序线索二叉树,中序线索二叉树 后续线索 ...
- Element tree树组件 鼠标双击事件
需求 双击 tree上的子节点,把节点文字显示在输入框中(这里简化一下,双击 tree 显示文字即可,省略 $emit 那一步) 注解:props 可以接收 defaultExpandAll(是否默认 ...
最新文章
- OpenCV基础知识入门
- 【遥感数字图像处理】实验:Erdas 软件的认识与使用
- 关于Github的那点事儿
- 草稿 12月第2周 排课
- python php 序列化,序列化和反序列化的详细介绍
- 工作资讯001---行业思维模式及经典语录随时更新
- 以太坊应用网络项目LUKSO通过可逆ICO筹集1800万美元
- 随手记android面试题,synchorinzed的一个面试题
- Spark sample入门到精通
- python源码中的学习笔记_第6章_元组
- codeforces 286E Ladies' Shop
- 8个Java实践项目:平均半个小时就可干完~
- C#SHA1算法及注意事项
- Scrapy爬取并分析CSDN热门文章标题
- linux中tar命令怎么用,linux tar命令使用详解
- Mybatis对Double类型的字符串进行范围查询
- js面试题:fn.call.call.call.call(fn2) 解析
- python视频补帧_视频补帧软件(DAIN APP)
- spamhaus反垃圾邮件联盟黑名单PBL申诉详细步骤
- 图片识别不了小程序怎么办_图片转文字【小程序】
热门文章
- div横排 html_HTML+CSS-如何定义让两个div横向排列
- 很多人问我为什么要奋斗
- 无法添加此网站的应用,扩展程序和用户脚本
- Navicat 导入向导报错
- yaw pitch row欧拉角理解
- 论文阅读:RAFT: Recurrent All-Pairs Field Transforms for Optical Flow
- ChatGPT Plus最新订阅教程,现在开通Plus超简单!国卡也能开通!
- linux sudo版本查询,如何查看linux版本
- VS Code智能提示功能之Typings
- 新版标准日本语中级_第三课