【Java用法】Hutool树结构工具-TreeUtil快速构建树形结构的两种方式 + 数据排序
import cn.hutool.core.collection.TreeUtil;
import cn.hutool.core.lang.tree.Tree;
import cn.hutool.core.lang.tree.TreeNode;
import cn.hutool.core.lang.tree.TreeUtil.NodeHandler;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
public class HutoolTreeExample {
public static void main(String[] args) {
// 初始化数据
List<TreeNode<String>> nodes = new ArrayList<>();
nodes.add(new TreeNode<>("1", "1", "根节点1", null));
nodes.add(new TreeNode<>("2", "2", "根节点2", "1"));
nodes.add(new TreeNode<>("3", "3", "节点1.1", "1"));
nodes.add(new TreeNode<>("4", "4", "节点1.1.1", "3"));
nodes.add(new TreeNode<>("5", "5", "根节点3", null));
// 方法一:使用TreeUtil.build方法构建树
List<Tree<String>> treeList = TreeUtil.build(nodes, "1", "id", "parentId", (list, node) -> {
// 对子节点进行处理
list.add(node);
});
// 方法二:使用TreeUtil.buildByRecursive方法构建树
List<Tree<String>> treeList2 = TreeUtil.buildByRecursive(nodes, "1", "id", "parentId");
// 对树进行排序,这里以节点名称进行升序排序
List<Tree<String>> sortedTree = treeList.stream()
.peek(tree -> tree.getChildren().sort(Comparator.comparing(Tree::getName)))
.sorted(Comparator.comparing(Tree::getName))
.collect(Collectors.toList());
// 打印结果
sortedTree.forEach(System.out::println);
}
}
这段代码首先初始化了一些树节点数据,然后使用Hutool的TreeUtil
工具类中的build
和buildByRecursive
方法构建树形结构,并对树进行了排序。最后打印出排序后的树形结构。这个例子展示了如何使用Hutool的树工具类来快速构建和排序树形结构。
评论已关闭