diff --git a/hutool-core/src/main/java/org/dromara/hutool/core/tree/TreeUtil.java b/hutool-core/src/main/java/org/dromara/hutool/core/tree/TreeUtil.java index 5f9c1f102..d9cc3432d 100644 --- a/hutool-core/src/main/java/org/dromara/hutool/core/tree/TreeUtil.java +++ b/hutool-core/src/main/java/org/dromara/hutool/core/tree/TreeUtil.java @@ -243,6 +243,42 @@ public class TreeUtil { return result; } + /** + * 获取所有父节点ID列表 + * + *

+ * 比如有个人在研发1部,他上面有研发部,接着上面有技术中心
+ * 返回结果就是:[研发部, 技术中心] + * + * @param 节点ID类型 + * @param node 节点 + * @param includeCurrentNode 是否包含当前节点的名称 + * @return 所有父节点ID列表,node为null返回空List + * @since 5.8.22 + */ + public static List getParentsId(MapTree node, boolean includeCurrentNode) { + final List result = new ArrayList<>(); + if (null == node) { + return result; + } + + if (includeCurrentNode) { + result.add(node.getId()); + } + + MapTree 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的节点 *