Class TreeKit

java.lang.Object
org.miaixz.bus.core.xyz.TreeKit

public class TreeKit extends Object
树工具类
Since:
Java 17+
Author:
Kimi Liu
  • Constructor Details

    • TreeKit

      public TreeKit()
  • Method Details

    • buildSingle

      public static MapTree<Integer> buildSingle(List<TreeNode<Integer>> list)
      构建单root节点树
      Parameters:
      list - 源数据集合
      Returns:
      MapTree
    • build

      public static List<MapTree<Integer>> build(List<TreeNode<Integer>> list)
      树构建
      Parameters:
      list - 源数据集合
      Returns:
      List
    • buildSingle

      public static <E> MapTree<E> buildSingle(List<TreeNode<E>> list, E parentId)
      构建单root节点树 它会生成一个以指定ID为ID的空的节点,然后逐级增加子节点。
      Type Parameters:
      E - ID类型
      Parameters:
      list - 源数据集合
      parentId - 最顶层父id值 一般为 0 之类
      Returns:
      MapTree
    • build

      public static <E> List<MapTree<E>> build(List<TreeNode<E>> list, E parentId)
      树构建
      Type Parameters:
      E - ID类型
      Parameters:
      list - 源数据集合
      parentId - 最顶层父id值 一般为 0 之类
      Returns:
      List
    • buildSingle

      public static <T, E> MapTree<E> buildSingle(List<T> list, E parentId, NodeParser<T,E> nodeParser)
      构建单root节点树 它会生成一个以指定ID为ID的空的节点,然后逐级增加子节点。
      Type Parameters:
      T - 转换的实体 为数据源里的对象类型
      E - ID类型
      Parameters:
      list - 源数据集合
      parentId - 最顶层父id值 一般为 0 之类
      nodeParser - 转换器
      Returns:
      MapTree
    • build

      public static <T, E> List<MapTree<E>> build(List<T> list, E parentId, NodeParser<T,E> nodeParser)
      树构建
      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

      public static <E> List<MapTree<E>> build(Map<E,MapTree<E>> map, E rootId)
      树构建,按照权重排序
      Type Parameters:
      E - ID类型
      Parameters:
      map - 源数据Map
      rootId - 最顶层父id值 一般为 0 之类
      Returns:
      List
    • buildSingle

      public static <E> MapTree<E> buildSingle(Map<E,MapTree<E>> map, E rootId)
      单点树构建,按照权重排序 它会生成一个以指定ID为ID的空的节点,然后逐级增加子节点。
      Type Parameters:
      E - ID类型
      Parameters:
      map - 源数据Map
      rootId - 根节点id值 一般为 0 之类
      Returns:
      MapTree
    • getNode

      public static <T> MapTree<T> getNode(MapTree<T> node, T id)
      获取ID对应的节点,如果有多个ID相同的节点,只返回第一个。 此方法只查找此节点及子节点,采用递归深度优先遍历。
      Type Parameters:
      T - ID类型
      Parameters:
      node - 节点
      id - ID
      Returns:
      节点
    • getParentsName

      public static <T> List<CharSequence> getParentsName(MapTree<T> node, boolean includeCurrentNode)
      获取所有父节点名称列表 比如有个人在研发1部,他上面有研发部,接着上面有技术中心 返回结果就是:[研发一部, 研发中心, 技术中心]
      Type Parameters:
      T - 节点ID类型
      Parameters:
      node - 节点
      includeCurrentNode - 是否包含当前节点的名称
      Returns:
      所有父节点名称列表,node为null返回空List
    • getParentsId

      public static <T> List<T> getParentsId(MapTree<T> node, boolean includeCurrentNode)
      获取所有父节点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

      public static <E> MapTree<E> createEmptyNode(E id)
      获取所有父节点ID列表 创建空Tree的节点
      Type Parameters:
      E - 节点ID类型
      Parameters:
      id - 节点ID
      Returns:
      MapTree
    • toList

      public static <E> List<MapTree<E>> toList(MapTree<E> root, boolean broadFirst)
      深度优先,遍历树,将树换为数组
      Type Parameters:
      E - 节点ID类型
      Parameters:
      root - 树的根节点
      broadFirst - 是否广度优先遍历
      Returns:
      树所有节点列表