TreeUtil增加getParentsId方法

This commit is contained in:
Looly
2023-08-16 10:31:50 +08:00
parent b48e793646
commit 80bdac99d9
2 changed files with 38 additions and 1 deletions

View File

@@ -230,6 +230,42 @@ public class TreeUtil {
return result;
}
/**
* 获取所有父节点ID列表
*
* <p>
* 比如有个人在研发1部他上面有研发部接着上面有技术中心<br>
* 返回结果就是:[研发部, 技术中心]
*
* @param <T> 节点ID类型
* @param node 节点
* @param includeCurrentNode 是否包含当前节点的名称
* @return 所有父节点ID列表node为null返回空List
* @since 5.8.22
*/
public static <T> List<T> getParentsId(Tree<T> node, boolean includeCurrentNode) {
final List<T> result = new ArrayList<>();
if (null == node) {
return result;
}
if (includeCurrentNode) {
result.add(node.getId());
}
Tree<T> parent = node.getParent();
T id;
while (null != parent) {
id = parent.getId();
parent = parent.getParent();
if(null != id || null != parent){
// issue#I795IN根节点的null不加入
result.add(id);
}
}
return result;
}
/**
* 创建空Tree的节点
*