diff --git a/hutool-core/src/main/java/org/dromara/hutool/core/tree/MapTree.java b/hutool-core/src/main/java/org/dromara/hutool/core/tree/MapTree.java index 681c3308f..c500410e0 100644 --- a/hutool-core/src/main/java/org/dromara/hutool/core/tree/MapTree.java +++ b/hutool-core/src/main/java/org/dromara/hutool/core/tree/MapTree.java @@ -368,22 +368,25 @@ public class MapTree extends LinkedHashMap implements Node */ public MapTree cloneTree() { final MapTree result = ObjUtil.clone(this); - result.setChildren(cloneChildren()); + result.setChildren(cloneChildren(result)); return result; } /** * 递归复制子节点 * + * @param parent 新的父节点 * @return 新的子节点列表 */ - private List> cloneChildren() { + private List> cloneChildren(final MapTree parent) { final List> children = getChildren(); if (null == children) { return null; } final List> newChildren = new ArrayList<>(children.size()); - children.forEach((t) -> newChildren.add(t.cloneTree())); + children.forEach((t) -> { + newChildren.add(t.cloneTree().setParent(parent)); + }); return newChildren; }