类 TreeUtil<T,ID>

java.lang.Object
com.elitesland.ystdms.sys.util.TreeUtil<T,ID>

public class TreeUtil<T,ID> extends Object
树形数据工具类.
  • 方法详细资料

    • buildTree

      public List<T> buildTree(List<T> list, Function<T,ID> idGetter, Function<T,ID> parentIdGetter, Function<T,List<T>> childrenGetter, BiConsumer<T,List<T>> childrenSetter, Comparator<T> comparator)
      构建树形结构
      参数:
      list - 平铺的数据列表
      idGetter - ID获取函数
      parentIdGetter - 父ID获取函数
      childrenSetter - 子节点设置函数
      comparator - 节点排序比较器(可以为null)
      返回:
      树形结构列表
    • buildTree

      public List<T> buildTree(List<T> list, Comparator<T> comparator)
      构建树形结构(简化版,要求节点实现TreeNode接口)
      参数:
      list - 平铺的数据列表
      comparator - 节点排序比较器(可以为null)
      返回:
      树形结构列表
    • flattenTree

      public List<T> flattenTree(List<T> tree, Function<T,List<T>> childrenGetter, TreeUtil.TraversalMode traversalMode)
      将树形结构平铺为列表
      参数:
      tree - 树形结构列表
      childrenGetter - 子节点获取函数
      traversalMode - 遍历模式:DFS(深度优先)或 BFS(广度优先)
      返回:
      平铺的列表,所有节点的children都为null,且按code+parentCode去重
    • flattenTree

      public List<T> flattenTree(List<T> tree, Function<T,List<T>> childrenGetter)
      将树形结构平铺为列表(默认深度优先)
      参数:
      tree - 树形结构列表
      childrenGetter - 子节点获取函数
      返回:
      平铺的列表
    • flattenTree

      public List<T> flattenTree(List<T> tree, TreeUtil.TraversalMode traversalMode)
      将树形结构平铺为列表(简化版,要求节点实现TreeNode接口)
      参数:
      tree - 树形结构列表
      traversalMode - 遍历模式
      返回:
      平铺的列表
    • sortTree

      public void sortTree(List<T> tree, Function<T,List<T>> childrenGetter, Comparator<T> comparator)
      对树进行排序
      参数:
      tree - 树形结构
      childrenGetter - 子节点获取函数
      comparator - 排序比较器
    • findNode

      public T findNode(List<T> tree, Function<T,List<T>> childrenGetter, Predicate<T> predicate)
      查找树中的节点
      参数:
      tree - 树形结构
      childrenGetter - 子节点获取函数
      predicate - 节点判断条件
      返回:
      找到的节点,未找到返回null
    • create

      public static <T, ID> TreeUtil<T,ID> create()
      创建TreeUtil实例的工厂方法