第一种方式构建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));
}

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐