mirror of
https://gitee.com/dromara/hutool.git
synced 2025-06-28 13:34:09 +08:00
修复Tree.cloneTree的Parent节点引用错误问题
This commit is contained in:
parent
baac5d05d4
commit
c3b576f698
@ -14,6 +14,7 @@
|
|||||||
* 【crypto 】 修复ZipUtil压缩成流的方法检查文件时报错问题(issue#3697@Github)
|
* 【crypto 】 修复ZipUtil压缩成流的方法检查文件时报错问题(issue#3697@Github)
|
||||||
* 【core 】 修复CopyOptions.setFieldValueEditor后生成null值setIgnoreNullValue无效问题(issue#3702@Github)
|
* 【core 】 修复CopyOptions.setFieldValueEditor后生成null值setIgnoreNullValue无效问题(issue#3702@Github)
|
||||||
* 【json 】 修复JSONConfig.setDateFormat设置后setWriteLongAsString失效问题(issue#IALQ0N@Gitee)
|
* 【json 】 修复JSONConfig.setDateFormat设置后setWriteLongAsString失效问题(issue#IALQ0N@Gitee)
|
||||||
|
* 【core 】 修复Tree.cloneTree的Parent节点引用错误问题(issue#IANJTC@Gitee)
|
||||||
|
|
||||||
-------------------------------------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------------------------------------
|
||||||
# 5.8.31(2024-08-12)
|
# 5.8.31(2024-08-12)
|
||||||
|
@ -315,22 +315,25 @@ public class Tree<T> extends LinkedHashMap<String, Object> implements Node<T> {
|
|||||||
*/
|
*/
|
||||||
public Tree<T> cloneTree() {
|
public Tree<T> cloneTree() {
|
||||||
final Tree<T> result = ObjectUtil.clone(this);
|
final Tree<T> result = ObjectUtil.clone(this);
|
||||||
result.setChildren(cloneChildren());
|
result.setChildren(cloneChildren(result));
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 递归复制子节点
|
* 递归复制子节点
|
||||||
*
|
*
|
||||||
|
* @param parent 新的父节点
|
||||||
* @return 新的子节点列表
|
* @return 新的子节点列表
|
||||||
*/
|
*/
|
||||||
private List<Tree<T>> cloneChildren() {
|
private List<Tree<T>> cloneChildren(final Tree<T> parent) {
|
||||||
final List<Tree<T>> children = getChildren();
|
final List<Tree<T>> children = getChildren();
|
||||||
if (null == children) {
|
if (null == children) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
final List<Tree<T>> newChildren = new ArrayList<>(children.size());
|
final List<Tree<T>> newChildren = new ArrayList<>(children.size());
|
||||||
children.forEach((t) -> newChildren.add(t.cloneTree()));
|
children.forEach((t) -> {
|
||||||
|
newChildren.add(t.cloneTree().setParent(parent));
|
||||||
|
});
|
||||||
return newChildren;
|
return newChildren;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user