# EasyTree
**Repository Path**: L_like_W/EasyTree
## Basic Information
- **Project Name**: EasyTree
- **Description**: 简单的构建工作业务上的tree结构
- **Primary Language**: Java
- **License**: Apache-2.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 7
- **Forks**: 0
- **Created**: 2023-09-22
- **Last Updated**: 2024-07-16
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# EasyTree
#### 介绍
简单的构建工作业务上的tree结构,在开发过程中由于开发者编码风格百花齐放有双重for循环构建、 根节点递归构建等,虽然最终返回的结构都符合需求但无论是在性能上还是代码冗余方面都存在着一定的问题 。EasyTree主要将项目中和tree
相关的业务统一抽象成一个逻辑减少代码的冗余与开发效率。每一个接口都抽象出一种业务需求tree的数据结构和属性
| 实现的业务tree | 展示图
|----------|-----------------------------|
| TreeNode接口是实现最基本的Tree结构 | 
| SumCountTreeNode接口主要实现Tree下每个Node绑定的数据个数统计 | 
| NodeFullPath接口实现将数据设置其绑定Node的全路径 | 
#### 使用说明
pom文件中导入maven依赖后,实体类实现对应的业务tree接口调用EasyTreeUtil工具类对应方法即可
第一个泛型为tree的唯一键的类型第二个泛型一般为实现该接口的类名
```xml
io.gitee.l_like_w
EasyTree
2.0.0
```
``` java
@Data
class TestTreeNode implements TreeNode {
private String id;
private String name;
private String parentId;
private List child = new ArrayList<>();
//其他属性可自行扩展
@Override
public String getParentId() {
return parentId;
}
@Override
public String treeName() {
return name;
}
@Override
public String id() {
return id;
}
@Override
public List child() {
return child;
}
}
```
``` java
//查询数据库数据
List allNode=selectList();
//构建tree
List trees=EasyTreeUtil.builderTree(allNode);
```
#### 参与贡献
1. Fork 本仓库
2. 新建 Feat_xxx 分支
3. 提交代码
4. 新建 Pull Request
#### 说明
* 1.如果我有地方考虑不周全、不规范或者没考虑到位的性能或其他方面问题欢迎补充
* 2.有其他需要拓展的业务tree欢迎提出我将在第一时间了解好业务场景并在确认没问题后更新到项目中
* 3.我第一次开源很多东西都是看其他项目是怎么开源自己借鉴的如果又做的不到位的
地方希望大家能够指出我将在第一时间改进