From b9b539f0debf84c5bd03f9dd684213773952a24a Mon Sep 17 00:00:00 2001 From: Looly Date: Wed, 16 Aug 2023 10:31:59 +0800 Subject: [PATCH] =?UTF-8?q?TreeUtil=E5=A2=9E=E5=8A=A0getParentsId=E6=96=B9?= =?UTF-8?q?=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dromara/hutool/core/tree/TreeUtil.java | 36 +++++++++++++++++++ 1 file changed, 36 insertions(+) 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的节点 *