From 04b6c3bcdc12e70e2ca1bf8c9b44782f97915b1c Mon Sep 17 00:00:00 2001 From: huangchengxing <841396397@qq.com> Date: Mon, 4 Jul 2022 18:31:44 +0800 Subject: [PATCH] fix bug --- .../cn/hutool/core/map/LinkedForestMap.java | 17 +++++++++-------- .../main/java/cn/hutool/core/map/TreeEntry.java | 2 +- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/hutool-core/src/main/java/cn/hutool/core/map/LinkedForestMap.java b/hutool-core/src/main/java/cn/hutool/core/map/LinkedForestMap.java index 8e7d7a95e..e030ae230 100644 --- a/hutool-core/src/main/java/cn/hutool/core/map/LinkedForestMap.java +++ b/hutool-core/src/main/java/cn/hutool/core/map/LinkedForestMap.java @@ -128,9 +128,10 @@ public class LinkedForestMap implements ForestMap { // 2.将目标的子节点直接将目标的父节点作为父节点 if (target.hasParent()) { final TreeEntryNode parent = target.getDeclaredParent(); + final Map> targetChildren = target.getChildren(); parent.removeDeclaredChild(target.getKey()); - target.getDeclaredChildren() - .forEach((k, c) -> parent.addChild((TreeEntryNode)c)); + target.clear(); + targetChildren.forEach((k, c) -> parent.addChild((TreeEntryNode)c)); } return target; } @@ -577,6 +578,7 @@ public class LinkedForestMap implements ForestMap { ), null); // 调整该节点的信息 + child.parent = this; child.traverseChildNodes(true, (i, c) -> { c.root = getRoot(); c.weight = i + getWeight() + 1; @@ -598,14 +600,13 @@ public class LinkedForestMap implements ForestMap { } // 断开该节点与其父节点的关系 - child.getDeclaredParent().children.remove(key); + this.children.remove(key); - // 将子节点从当前节点中移除,并重置子节点及其下属节点的相关属性 - children.remove(child.getKey()); + // 重置子节点及其下属节点的相关属性 child.parent = null; - child.traverseChildNodes(true, (index, node) -> { - node.root = child; - node.weight = index; + child.traverseChildNodes(true, (i, c) -> { + c.root = child; + c.weight = i; }, null); } diff --git a/hutool-core/src/main/java/cn/hutool/core/map/TreeEntry.java b/hutool-core/src/main/java/cn/hutool/core/map/TreeEntry.java index 358723a48..3c64448c3 100644 --- a/hutool-core/src/main/java/cn/hutool/core/map/TreeEntry.java +++ b/hutool-core/src/main/java/cn/hutool/core/map/TreeEntry.java @@ -119,7 +119,7 @@ public interface TreeEntry extends Map.Entry { * @return 是否 */ default boolean hasChildren() { - return CollUtil.isEmpty(getDeclaredChildren()); + return CollUtil.isNotEmpty(getDeclaredChildren()); } /**