Class TreeKit

java.lang.Object
org.aoju.bus.core.toolkit.TreeKit

public class TreeKit extends Object
树工具类 提供通用树生成,特点: 1、每个字段可自定义 2、支持排序 树深度配置,自定义转换器等 3、支持额外属性扩展 4、贴心 许多属性,特性都有默认值处理 5、使用简单 可一行代码生成树 6、代码简洁轻量无额外依赖
Since:
Java 17+
Author:
Kimi Liu
  • Constructor Details

    • TreeKit

      public TreeKit()
  • Method Details

    • buildSingle

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

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

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

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

      public static <T, E> Tree<E> buildSingle(List<T> list, E parentId, NodeParser<T,E> nodeParser)
      构建单root节点树
      Type Parameters:
      T - 转换的实体 为数据源里的对象类型
      E - ID类型
      Parameters:
      list - 源数据集合
      parentId - 最顶层父id值 一般为 0 之类
      nodeParser - 转换器
      Returns:
      Tree
    • build

      public static <T, E> List<Tree<E>> build(List<T> list, E parentId, NodeParser<T,E> nodeParser)
      树构建
      Type Parameters:
      T - 转换的实体 为数据源里的对象类型
      E - ID类型
      Parameters:
      list - 源数据集合
      parentId - 最顶层父id值 一般为 0 之类
      nodeParser - 转换器
      Returns:
      the list
    • build

      public static <T, E> List<Tree<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:
      the list
    • buildSingle

      public static <T, E> Tree<E> buildSingle(List<T> list, E rootId, NodeConfig nodeConfig, NodeParser<T,E> nodeParser)
      构建单root节点树
      Type Parameters:
      T - 转换的实体 为数据源里的对象类型
      E - ID类型
      Parameters:
      list - 源数据集合
      rootId - 最顶层父id值 一般为 0 之类
      nodeConfig - 配置
      nodeParser - 转换器
      Returns:
      Tree
    • build

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

      public static <E> Tree<E> buildSingle(Map<E,Tree<E>> map, E rootId)
      单点树构建,按照权重排序
      Type Parameters:
      E - ID类型
      Parameters:
      map - 源数据Map
      rootId - 根节点id值 一般为 0 之类
      Returns:
      Tree
    • getNode

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

      public static <T> List<CharSequence> getParentsName(Tree<T> node, boolean includeCurrentNode)
      获取所有父节点名称列表

      比如有个人在研发1部,他上面有研发部,接着上面有技术中心 返回结果就是:[研发一部, 研发中心, 技术中心]

      Type Parameters:
      T - 节点ID类型
      Parameters:
      node - 节点
      includeCurrentNode - 是否包含当前节点的名称
      Returns:
      所有父节点名称列表,node为null返回空List
    • createEmptyNode

      public static <E> Tree<E> createEmptyNode(E id)
      创建空Tree的节点
      Type Parameters:
      E - 节点ID类型
      Parameters:
      id - 节点ID
      Returns:
      Tree