类 TreeUtils
java.lang.Object
io.github.lishangbu.orange.web.util.TreeUtils
树形结构工具类,用于处理树形数据
提供构建/查找/过滤/遍历等常用树操作,要求调用方显式传入获取子节点的函数,移除反射兼容以提高类型安全和性能
- 从以下版本开始:
- 2025/08/25
- 作者:
- lishangbu
- 
构造器概要构造器
- 
方法概要修饰符和类型方法说明static <T,I> List <T> buildTree(List<T> list, Function<T, I> idGetter, Function<T, I> parentIdGetter, Function<T, List<T>> childrenGetter, BiConsumer<T, List<T>> childrenSetter) 将列表转换为树形结构,根父ID默认为 nullstatic <T,I> List <T> buildTree(List<T> list, Function<T, I> idGetter, Function<T, I> parentIdGetter, Function<T, List<T>> childrenGetter, BiConsumer<T, List<T>> childrenSetter, I rootParentId) 将列表转换为树形结构,允许指定 childrenGetter 和 rootParentIdstatic <T> List<T> filterTree(List<T> tree, Predicate<T> predicate, Function<T, List<T>> childrenGetter, BiConsumer<T, List<T>> childrenSetter) 过滤树节点,保持树形结构static <T> T在树中查找符合条件的第一个节点static <T,I> T findNodeById(List<T> tree, I id, Function<T, I> idGetter, Function<T, List<T>> childrenGetter) 根据节点ID查找节点static <T> List<T> 在树中查找所有符合条件的节点static <T> List<T> flattenTree(List<T> tree, Function<T, List<T>> childrenGetter) 树形结构扁平化为列表static <T> intgetMaxDepth(List<T> tree, Function<T, List<T>> childrenGetter) 计算树的最大深度static <T> List<T> getNodePath(List<T> tree, Predicate<T> targetPredicate, Function<T, List<T>> childrenGetter) 获取从根节点到目标节点的路径static <T> voidtraverseTree(List<T> tree, BiConsumer<T, Integer> action, Function<T, List<T>> childrenGetter) 遍历树结构,对每个节点执行操作
- 
构造器详细资料- 
TreeUtilspublic TreeUtils()
 
- 
- 
方法详细资料- 
buildTree
- 
buildTreepublic static <T,I> List<T> buildTree(List<T> list, Function<T, I> idGetter, Function<T, I> parentIdGetter, Function<T, List<T>> childrenGetter, BiConsumer<T, List<T>> childrenSetter, I rootParentId) 将列表转换为树形结构,允许指定 childrenGetter 和 rootParentId- 类型参数:
- T- 节点类型
- I- ID类型
- 参数:
- list- 待转换的列表
- idGetter- 获取节点ID的函数
- parentIdGetter- 获取父节点ID的函数
- childrenGetter- 获取节点子列表的函数(比反射更高效、类型安全)
- childrenSetter- 设置子节点的函数
- rootParentId- 被视为根节点父ID的值(例如 null、0、-1 等)
- 返回:
- 树形结构的根节点列表
 
- 
findNode
- 
findNodes
- 
getNodePath
- 
flattenTree
- 
filterTree
- 
traverseTreepublic static <T> void traverseTree(List<T> tree, BiConsumer<T, Integer> action, Function<T, List<T>> childrenGetter) 遍历树结构,对每个节点执行操作- 类型参数:
- T- 节点类型
- 参数:
- tree- 树结构
- action- 要执行的操作
- childrenGetter- 获取子节点的函数
 
- 
getMaxDepth
- 
findNodeById
 
-