Package org.miaixz.bus.core.xyz
Class TreeKit
java.lang.Object
org.miaixz.bus.core.xyz.TreeKit
树工具类
- Since:
- Java 17+
- Author:
- Kimi Liu
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescription树构建树构建build(List<T> list, E rootId, NodeConfig nodeConfig, NodeParser<T, E> nodeParser) 树构建build(List<T> list, E parentId, NodeParser<T, E> nodeParser) 树构建树构建,按照权重排序static <E> MapTree<E> buildSingle(List<TreeNode<E>> list, E parentId) 构建单root节点树 它会生成一个以指定ID为ID的空的节点,然后逐级增加子节点。buildSingle(List<TreeNode<Integer>> list) 构建单root节点树static <T,E> MapTree <E> buildSingle(List<T> list, E rootId, NodeConfig nodeConfig, NodeParser<T, E> nodeParser) 构建单root节点树 它会生成一个以指定ID为ID的空的节点,然后逐级增加子节点。static <T,E> MapTree <E> buildSingle(List<T> list, E parentId, NodeParser<T, E> nodeParser) 构建单root节点树 它会生成一个以指定ID为ID的空的节点,然后逐级增加子节点。static <E> MapTree<E> buildSingle(Map<E, MapTree<E>> map, E rootId) 单点树构建,按照权重排序 它会生成一个以指定ID为ID的空的节点,然后逐级增加子节点。static <E> MapTree<E> createEmptyNode(E id) 获取所有父节点ID列表 创建空Tree的节点static <T> MapTree<T> 获取ID对应的节点,如果有多个ID相同的节点,只返回第一个。 此方法只查找此节点及子节点,采用递归深度优先遍历。static <T,E> List <E> getParents(MapTree<T> node, boolean includeCurrentNode, Function<MapTree<T>, E> fieldFunc) 获取所有父节点指定函数结果列表static <T> List<T> getParentsId(MapTree<T> node, boolean includeCurrentNode) 获取所有父节点ID列表static <T> List<CharSequence> getParentsName(MapTree<T> node, boolean includeCurrentNode) 获取所有父节点名称列表深度优先,遍历树,将树换为数组
-
Constructor Details
-
TreeKit
public TreeKit()
-
-
Method Details
-
buildSingle
构建单root节点树- Parameters:
list- 源数据集合- Returns:
MapTree
-
build
树构建- Parameters:
list- 源数据集合- Returns:
- List
-
buildSingle
构建单root节点树 它会生成一个以指定ID为ID的空的节点,然后逐级增加子节点。- Type Parameters:
E- ID类型- Parameters:
list- 源数据集合parentId- 最顶层父id值 一般为 0 之类- Returns:
MapTree
-
build
树构建- Type Parameters:
E- ID类型- Parameters:
list- 源数据集合parentId- 最顶层父id值 一般为 0 之类- Returns:
- List
-
buildSingle
构建单root节点树 它会生成一个以指定ID为ID的空的节点,然后逐级增加子节点。- Type Parameters:
T- 转换的实体 为数据源里的对象类型E- ID类型- Parameters:
list- 源数据集合parentId- 最顶层父id值 一般为 0 之类nodeParser- 转换器- Returns:
MapTree
-
build
树构建- Type Parameters:
T- 转换的实体 为数据源里的对象类型E- ID类型- Parameters:
list- 源数据集合parentId- 最顶层父id值 一般为 0 之类nodeParser- 转换器- Returns:
- List
-
build
public static <T,E> List<MapTree<E>> build(List<T> list, E rootId, NodeConfig nodeConfig, NodeParser<T, E> nodeParser) 树构建- Type Parameters:
T- 转换的实体 为数据源里的对象类型E- ID类型- Parameters:
list- 源数据集合rootId- 最顶层父id值 一般为 0 之类nodeConfig- 配置nodeParser- 转换器- Returns:
- List
-
buildSingle
public static <T,E> MapTree<E> buildSingle(List<T> list, E rootId, NodeConfig nodeConfig, NodeParser<T, E> nodeParser) 构建单root节点树 它会生成一个以指定ID为ID的空的节点,然后逐级增加子节点。- Type Parameters:
T- 转换的实体 为数据源里的对象类型E- ID类型- Parameters:
list- 源数据集合rootId- 最顶层父id值 一般为 0 之类nodeConfig- 配置nodeParser- 转换器- Returns:
MapTree
-
build
树构建,按照权重排序- Type Parameters:
E- ID类型- Parameters:
map- 源数据MaprootId- 最顶层父id值 一般为 0 之类- Returns:
- List
-
buildSingle
单点树构建,按照权重排序 它会生成一个以指定ID为ID的空的节点,然后逐级增加子节点。- Type Parameters:
E- ID类型- Parameters:
map- 源数据MaprootId- 根节点id值 一般为 0 之类- Returns:
MapTree
-
getNode
获取ID对应的节点,如果有多个ID相同的节点,只返回第一个。 此方法只查找此节点及子节点,采用递归深度优先遍历。- Type Parameters:
T- ID类型- Parameters:
node- 节点id- ID- Returns:
- 节点
-
getParentsName
获取所有父节点名称列表比如有个人在研发1部,他上面有研发部,接着上面有技术中心 返回结果就是:[研发一部, 研发中心, 技术中心]
- Type Parameters:
T- 节点ID类型- Parameters:
node- 节点includeCurrentNode- 是否包含当前节点的名称- Returns:
- 所有父节点名称列表,node为null返回空List
-
getParentsId
获取所有父节点ID列表比如有个人在研发1部,他上面有研发部,接着上面有技术中心 返回结果就是:[研发部, 技术中心]
- Type Parameters:
T- 节点ID类型- Parameters:
node- 节点includeCurrentNode- 是否包含当前节点的名称- Returns:
- 所有父节点ID列表,node为null返回空List
-
getParents
public static <T,E> List<E> getParents(MapTree<T> node, boolean includeCurrentNode, Function<MapTree<T>, E> fieldFunc) 获取所有父节点指定函数结果列表- Type Parameters:
T- 节点ID类型E- 字段值类型- Parameters:
node- 节点includeCurrentNode- 是否包含当前节点的名称fieldFunc- 获取父节点名称的函数- Returns:
- 所有父节点字段值列表,node为null返回空List
-
createEmptyNode
获取所有父节点ID列表 创建空Tree的节点- Type Parameters:
E- 节点ID类型- Parameters:
id- 节点ID- Returns:
MapTree
-
toList
深度优先,遍历树,将树换为数组- Type Parameters:
E- 节点ID类型- Parameters:
root- 树的根节点broadFirst- 是否广度优先遍历- Returns:
- 树所有节点列表
-