diff --git a/commons/common-util/src/main/java/com/schbrain/common/util/TreeUtils.java b/commons/common-util/src/main/java/com/schbrain/common/util/TreeUtils.java index ea853e2faa7561d29c70be71e5660e16c8cd0fd9..c18b6bd2528466d10b5dc6ab25b92e98ce9f1e60 100644 --- a/commons/common-util/src/main/java/com/schbrain/common/util/TreeUtils.java +++ b/commons/common-util/src/main/java/com/schbrain/common/util/TreeUtils.java @@ -1,5 +1,6 @@ package com.schbrain.common.util; +import cn.hutool.core.collection.ListUtil; import org.apache.commons.collections4.CollectionUtils; import javax.annotation.Nullable; @@ -61,15 +62,21 @@ public class TreeUtils { Comparator childrenComparator, K parentId) { List subNodes = parentWithSubNodes.remove(parentId); - return StreamUtils.toList(subNodes, subNode -> { + List treeList = StreamUtils.toList(subNodes, subNode -> { E child = childMapper.apply(subNode); List children = doBuildTree(keyExtractor, childrenSetter, childMapper, parentWithSubNodes, childrenComparator, keyExtractor.apply(subNode)); - if (CollectionUtils.isNotEmpty(children) && childrenComparator != null) { - children.sort(Comparator.nullsLast(childrenComparator)); - } + sort(children, childrenComparator); childrenSetter.accept(child, children); return child; }); + sort(treeList, childrenComparator); + return treeList; + } + + private static void sort(List dataList, Comparator comparator) { + if (comparator != null) { + ListUtil.sort(dataList, Comparator.nullsLast(comparator)); + } } }