TreeUtils

object TreeUtils

树结构处理工具

提供树的构建、查找、路径获取、扁平化、过滤和遍历等常用操作

Author

lishangbu

Since

2025/08/25

Functions

Link copied to clipboard
fun <T : Any, I> buildTree(list: List<T>?, idGetter: Function<T, I>, parentIdGetter: Function<T, I>, childrenSetter: BiConsumer<T, List<T>>): List<T>

将列表构建为树结构

Link copied to clipboard
fun <T : Any> filterTree(tree: List<T>?, predicate: Predicate<T>, childrenGetter: Function<T, List<T>?>, childrenSetter: BiConsumer<T, List<T>?>): List<T>

按条件过滤树结构

Link copied to clipboard
fun <T : Any> findNode(tree: List<T>?, predicate: Predicate<T>, childrenGetter: Function<T, List<T>?>): T?

查找首个匹配节点

Link copied to clipboard
fun <T : Any, I> findNodeById(tree: List<T>?, id: I, idGetter: Function<T, I>, childrenGetter: Function<T, List<T>?>): T?

根据 ID 查找节点

Link copied to clipboard
fun <T : Any> findNodes(tree: List<T>?, predicate: Predicate<T>, childrenGetter: Function<T, List<T>?>): List<T>

查找所有匹配节点

Link copied to clipboard
fun <T : Any> flattenTree(tree: List<T>?, childrenGetter: Function<T, List<T>?>): List<T>

将树结构扁平化为列表

Link copied to clipboard
fun <T : Any> getMaxDepth(tree: List<T>?, childrenGetter: Function<T, List<T>?>): Int

获取树的最大深度

Link copied to clipboard
fun <T : Any> getNodePath(tree: List<T>?, targetPredicate: Predicate<T>, childrenGetter: Function<T, List<T>?>): List<T>

获取目标节点路径

Link copied to clipboard
fun <T : Any> traverseTree(tree: List<T>?, action: BiConsumer<T, Int>, childrenGetter: Function<T, List<T>?>)

遍历树结构