引入依赖
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-core</artifactId>
<version>5.3.10</version>
<scope>compile</scope>
</dependency>
第一种方式构建Tree
public static void main(String[] args) {
// 构建node列表(数据源)
List<TreeNode<String>> nodeList = CollUtil.newArrayList();
nodeList.add(new TreeNode<>("1", "0", "系统管理", 5));
nodeList.add(new TreeNode<>("11", "1", "用户管理", 222222));
nodeList.add(new TreeNode<>("111", "11", "用户添加", 0));
nodeList.add(new TreeNode<>("2", "0", "店铺管理", 1));
nodeList.add(new TreeNode<>("21", "2", "商品管理", 44));
nodeList.add(new TreeNode<>("221", "2", "商品管理2", 2));
// 0表示最顶层的id是0
List<Tree<String>> treeList = TreeUtil.build(nodeList, "0");
System.out.println(JSON.toJSONString(treeList));
}
第二种自定义字段名
public static void main(String[] args) {
//配置
TreeNodeConfig treeNodeConfig = new TreeNodeConfig();
// 自定义属性名
treeNodeConfig.setWeightKey("order"); // 权重排序字段 默认为weight
treeNodeConfig.setIdKey("id"); // 默认为id可以不设置
treeNodeConfig.setNameKey("name"); // 节点名对应名称 默认为name
treeNodeConfig.setParentIdKey("parentId"); // 父节点 默认为parentId
treeNodeConfig.setChildrenKey("children"); // 子点 默认为children
treeNodeConfig.setDeep(3); // 可以配置递归深度 从0开始计算 默认此配置为空,即不限制
//数据源
List<Student> nodeList = list();
//转换器 "0" - 最顶层父id值 一般为0之类 nodeList – 源数据集合
List<Tree<String>> treeNodes = TreeUtil.build(nodeList, "0", treeNodeConfig,
// treeNode – 源数据实体
// tree – 树节点实体
(treeNode, tree) -> {
tree.setId(treeNode.getId());
tree.setParentId(treeNode.getParentId());
tree.setWeight(treeNode.getWeight());
tree.setName(treeNode.getName());
// 扩展属性 ...
tree.putExtra("extraField", 666);
tree.putExtra("other", new Object());
System.out.println(JSON.toJSONString(treeNodes));
}