diff --git a/hutool-core/src/main/java/cn/hutool/core/lang/tree/TreeUtil.java b/hutool-core/src/main/java/cn/hutool/core/lang/tree/TreeUtil.java
index 317b1af4c..faa0f0083 100755
--- a/hutool-core/src/main/java/cn/hutool/core/lang/tree/TreeUtil.java
+++ b/hutool-core/src/main/java/cn/hutool/core/lang/tree/TreeUtil.java
@@ -1,5 +1,6 @@
package cn.hutool.core.lang.tree;
+import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.IterUtil;
import cn.hutool.core.lang.tree.parser.DefaultNodeParser;
import cn.hutool.core.lang.tree.parser.NodeParser;
@@ -329,4 +330,62 @@ public class TreeUtil {
});
setChildFunc.accept(root, children);
}
+
+
+
+ /**
+ * 将拥有子父级字段的横向列表转成子父级结构的树形列表
+ *
+ *
例:
+ *
+ * - totalList:
+ * [
+ * {"id":1,"parentId":0,"name":"level1"},
+ * {"id":2,"parentId":1,"name":"level2"},
+ * {"id":3,"parentId":2,"name":"level3"},
+ * {"id":22,"parentId":1,"name":"level2"},
+ * {"id":5,"parentId":2,"name":"level3"} ]
+ *
+ * - rootList:
+ * [{"id":1,"parentId":0,"name":"level1"}]
+ *
+ * - parentKey: parentId
+ * - slfKey: id
+ * - childListFieldName: subList
+ * - 返回结果:[{"id":1,"parentId":0,"name":"level1","subList":[{"id":2,"parentId":1,"name":"level2","subList":[{"id":3,"parentId":2,"name":"level3"}]},{"id":22,"parentId":1,"name":"level2","subList":[{"id":5,"parentId":2,"name":"level3"}]}]}]
+ *
+ * @param totalList 总列表(需要树形化的所有数据组成的列表)
+ * @param rootList 根列表(顶级无父级,只包含最顶级的节点列表)
+ * @param parentKey 父级关联的字段名(列表元素中都需要有该字段eg: parentId/parentCode/parentKey)
+ * @param slfKey 列表对象中具备唯一性的字段名(eg:pkId,id,uniqueKey,code......etc.)
+ * @param childListFieldName 子列表的字段名(子列表应为clazz对象的成员变量eg: childList/child/children/subList......etc.)
+ * @throws RuntimeException 入参的list元素对象的属性字段名不一致或者parentKey与slfKey对应的字段为空
+ * @return 树形后的列表
+ * @author bioxygenrich25
+ */
+ public static List