public class TreeUtil extends Object
| Constructor and Description |
|---|
TreeUtil() |
| Modifier and Type | Method and Description |
|---|---|
static <T,E> List<MapTree<E>> |
build(Iterable<T> list,
E parentId,
NodeParser<T,E> nodeParser)
树构建
你所有节点的ID都不应该重复,那你要构建一个列表形式的树结构,指定的这个rootId应该是首层节点的parentId,而非某个节点的id |
static <T,E> List<MapTree<E>> |
build(Iterable<T> list,
E rootId,
TreeNodeConfig treeNodeConfig,
NodeParser<T,E> nodeParser)
树构建
你所有节点的ID都不应该重复,那你要构建一个列表形式的树结构,指定的这个rootId应该是首层节点的parentId,而非某个节点的id |
static <E> List<MapTree<E>> |
build(Iterable<TreeNode<E>> list,
E parentId)
树构建
|
static List<MapTree<Integer>> |
build(Iterable<TreeNode<Integer>> list)
树构建
|
static <E> List<MapTree<E>> |
build(Map<E,MapTree<E>> map,
E rootId)
树构建,按照权重排序
|
static <T,E> MapTree<E> |
buildSingle(Iterable<T> list,
E parentId,
NodeParser<T,E> nodeParser)
构建单root节点树
它会将指定Id的节点作为根节点,如果这个节点不存在,则创建一个空节点,然后逐级增加子节点。 |
static <T,E> MapTree<E> |
buildSingle(Iterable<T> list,
E rootId,
TreeNodeConfig treeNodeConfig,
NodeParser<T,E> nodeParser)
构建单root节点树
它会生成一个以指定ID为ID的空的节点,然后逐级增加子节点。 |
static <E> MapTree<E> |
buildSingle(Iterable<TreeNode<E>> list,
E parentId)
构建单root节点树
它会生成一个以指定ID为ID的空的节点,然后逐级增加子节点。 |
static MapTree<Integer> |
buildSingle(Iterable<TreeNode<Integer>> list)
构建单root节点树
|
static <E> MapTree<E> |
buildSingle(Map<E,MapTree<E>> map,
E rootId)
单点树构建,按照权重排序
它会生成一个以指定ID为ID的空的节点,然后逐级增加子节点。 |
static <E> MapTree<E> |
createEmptyNode(E id)
获取所有父节点ID列表
比如有个人在研发1部,他上面有研发部,接着上面有技术中心
parent = parent.getParent();) { if(null ! |
static <T> MapTree<T> |
getNode(MapTree<T> node,
T id)
获取ID对应的节点,如果有多个ID相同的节点,只返回第一个。
|
static <T,E> List<E> |
getParents(MapTree<T> node,
boolean includeCurrentNode,
Function<MapTree<T>,E> fieldFunc)
获取所有父节点指定函数结果列表
|
static <T> List<T> |
getParentsId(MapTree<T> node,
boolean includeCurrentNode)
获取所有父节点ID列表
比如有个人在研发1部,他上面有研发部,接着上面有技术中心
返回结果就是:[研发部, 技术中心] |
static <T> List<CharSequence> |
getParentsName(MapTree<T> node,
boolean includeCurrentNode)
获取所有父节点名称列表
比如有个人在研发1部,他上面有研发部,接着上面有技术中心
返回结果就是:[研发一部, 研发中心, 技术中心] |
static <E> List<MapTree<E>> |
toList(MapTree<E> root,
boolean broadFirst)
深度优先,遍历树,将树换为数组
|
public static MapTree<Integer> buildSingle(Iterable<TreeNode<Integer>> list)
list - 源数据集合MapTreepublic static List<MapTree<Integer>> build(Iterable<TreeNode<Integer>> list)
list - 源数据集合public static <E> MapTree<E> buildSingle(Iterable<TreeNode<E>> list, E parentId)
E - ID类型list - 源数据集合parentId - 最顶层父id值 一般为 0 之类MapTreepublic static <E> List<MapTree<E>> build(Iterable<TreeNode<E>> list, E parentId)
E - ID类型list - 源数据集合parentId - 最顶层父id值 一般为 0 之类public static <T,E> MapTree<E> buildSingle(Iterable<T> list, E parentId, NodeParser<T,E> nodeParser)
T - 转换的实体 为数据源里的对象类型E - ID类型list - 源数据集合parentId - 最顶层父id值 一般为 0 之类nodeParser - 转换器MapTreepublic static <T,E> List<MapTree<E>> build(Iterable<T> list, E parentId, NodeParser<T,E> nodeParser)
T - 转换的实体 为数据源里的对象类型E - ID类型list - 源数据集合parentId - 最顶层父id值 一般为 0 之类nodeParser - 转换器public static <T,E> List<MapTree<E>> build(Iterable<T> list, E rootId, TreeNodeConfig treeNodeConfig, NodeParser<T,E> nodeParser)
T - 转换的实体 为数据源里的对象类型E - ID类型list - 源数据集合rootId - 最顶层父id值 一般为 0 之类treeNodeConfig - 配置nodeParser - 转换器public static <T,E> MapTree<E> buildSingle(Iterable<T> list, E rootId, TreeNodeConfig treeNodeConfig, NodeParser<T,E> nodeParser)
T - 转换的实体 为数据源里的对象类型E - ID类型list - 源数据集合rootId - 最顶层父id值 一般为 0 之类treeNodeConfig - 配置nodeParser - 转换器MapTreepublic static <E> List<MapTree<E>> build(Map<E,MapTree<E>> map, E rootId)
E - ID类型map - 源数据MaprootId - 最顶层父id值 一般为 0 之类public static <E> MapTree<E> buildSingle(Map<E,MapTree<E>> map, E rootId)
E - ID类型map - 源数据MaprootId - 根节点id值 一般为 0 之类MapTreepublic static <T> MapTree<T> getNode(MapTree<T> node, T id)
T - ID类型node - 节点id - IDpublic static <T> List<CharSequence> getParentsName(MapTree<T> node, boolean includeCurrentNode)
比如有个人在研发1部,他上面有研发部,接着上面有技术中心
返回结果就是:[研发一部, 研发中心, 技术中心]
T - 节点ID类型node - 节点includeCurrentNode - 是否包含当前节点的名称public static <T> List<T> getParentsId(MapTree<T> node, boolean includeCurrentNode)
比如有个人在研发1部,他上面有研发部,接着上面有技术中心
返回结果就是:[研发部, 技术中心]
T - 节点ID类型node - 节点includeCurrentNode - 是否包含当前节点的名称public static <T,E> List<E> getParents(MapTree<T> node, boolean includeCurrentNode, Function<MapTree<T>,E> fieldFunc)
T - 节点ID类型E - 字段值类型node - 节点includeCurrentNode - 是否包含当前节点的名称fieldFunc - 获取父节点名称的函数public static <E> MapTree<E> createEmptyNode(E id)
比如有个人在研发1部,他上面有研发部,接着上面有技术中心
parent = parent.getParent();) {
if(null != id || null != parent){
// issue#I795IN,根节点的null不加入
result.add(fieldFunc.apply(parent));
}
}
return result;
}
/** 创建空Tree的节点
E - 节点ID类型id - 节点IDMapTreeCopyright © 2025. All rights reserved.