首页 > 其他分享 >hutool的树形工具类-TreeUtil

hutool的树形工具类-TreeUtil

时间:2023-07-19 16:44:06浏览次数:48  
标签:users tree hutool add 树形 TreeUtil User import new

package com.fayi.hutool.TreeUtil;
 
import cn.hutool.core.lang.tree.Tree;
import cn.hutool.core.lang.tree.TreeNodeConfig;
import cn.hutool.core.lang.tree.TreeUtil;
import cn.hutool.json.JSONUtil;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
 
import java.util.ArrayList;
import java.util.List;
 
public class Demo {
 
    public static void main(String[] args) {
        List<User> users = new ArrayList<>();
        users.add(new User("1", "", "0", "手机"));
        users.add(new User("2", "", "1", "小米"));
        users.add(new User("3", "", "1", "华为"));
        users.add(new User("4", "", "0", "水果"));
        users.add(new User("5", "", "4", "香蕉"));
        users.add(new User("6", "", "4", "菠萝"));
        TreeNodeConfig config = new TreeNodeConfig();
        List<Tree<String>> treeList = TreeUtil.build(users, "0", config, (treeNode, tree) -> {
            tree.setId(treeNode.getId());
            tree.setParentId(treeNode.getPid());
            tree.setName(treeNode.getName());
        });
        System.out.println(JSONUtil.toJsonStr(treeList));
 
        // 自定义字段名,userId 对应pid
        users.clear();
        users.add(new User("1", "10", "0", "手机"));
        users.add(new User("2", "20", "10", "小米"));
        users.add(new User("3", "30", "10", "华为"));
        users.add(new User("4", "40", "0", "水果"));
        users.add(new User("5", "50", "40", "香蕉"));
        users.add(new User("6", "60", "40", "菠萝"));
        config.setIdKey("userId");
        treeList = TreeUtil.build(users, "0", config, (treeNode, tree) -> {
            tree.setId(treeNode.getUserId());
            tree.setParentId(treeNode.getPid());
            tree.setName(treeNode.getName());
            tree.putExtra("id", treeNode.getId());
        });
        System.out.println(JSONUtil.toJsonStr(treeList));
    }
 
}
 
@NoArgsConstructor
@AllArgsConstructor
@Data
class User {
 
    private String id;
    private String userId;
    private String pid;
    private String name;
}

可以灵活配置,树形结果返回,不再需要自己写递归了

Hutool参考文档

标签:users,tree,hutool,add,树形,TreeUtil,User,import,new
From: https://www.cnblogs.com/wffzk/p/17566033.html

相关文章

  • 洛谷 P2458 [SDOI2006] 保安站岗 - 树形DP
    P2458保安站岗思路:树形DP三个状态:dp[i][0]:节点i位置放保安的最小花费dp[i][1]:节点i位置不放保安,但被子节点的保安看守dp[i][2]:节点i位置不放保安,但被父节点的保安看守状态转移:dp[i][0]:节点i位置放保安,那么它可以合并子节点任何状态的最小值;dp[i][1]:节点i位......
  • 数据结构 查找 树形查找
    1.二叉排序树二叉排序树可以提高查找、插入和删除的效率。(1)二叉排序树(BST)的定义定义比较简单,左子树所有结点<根节点<右子树所有结点同时左右子树也分别都是二叉排序树特点:对二叉排序树进行中序遍历,可以得到一个递增有序序列。(2)二叉排序树的插入BST的插入是为了其构造而使......
  • React中编写操作树形数据的自定义Hook
    什么是Hookhook即为钩子,是一种特殊的函数,它可以让你在函数式组件中使用一些react特性,目前在react中常用的hook有以下几类useState:用于在函数组件中定义和使用状态(state)。useEffect:用于在函数组件中处理副作用,也可以模拟react生命周期useContext:用于在函......
  • E. Two Chess Pieces -- (codeforces) 树形DP
    原题链接:https://codeforces.com/contest/1774/problem/E题意:两颗棋子,给出两颗棋子必须要去的顶点,且给出两颗棋子的相隔距离不能大于d,算出两颗棋子完成目标后走的距离。最后两颗棋子都要回到顶点1上。思路:刚开始没想出来,顺着官方题解写的,大意就是我用数组s1和s2代表两颗棋子......
  • hutool md5 aes 加密解密
    //AES加密解密AESaes=newAES(Mode.CBC,Padding.ZeroPadding,"xxx".getBytes(),"xxx".getBytes());//加密并进行Base转码Stringencrypt=aes.encryptBase64(content);//解密为字符串Stringdecrypt=aes.decryptStr(encrypt);System.out.println(decrypt);......
  • BZOJ 2427: [HAOI2010]软件安装 树形背包
    2427:[HAOI2010]软件安装TimeLimit: 10Sec  MemoryLimit: 128MBSubmit: 1275  Solved: 492[Submit][Status][Discuss]Description现在我们的手头有N个软件,对于一个软件i,它要占用Wi的磁盘空间,它的价值为Vi。我们希望从中选择一些软件安装到一台磁盘容量为M计算机......
  • java、vue基于hutool的aes指定秘钥加密(前后端aes加解密)
     后端代码//加密data对称AESKeybyte[]key=getBytes("._^BV67nW6ck8fwg",16);//秘钥长度最好是16位SymmetricCryptoaes=newSymmetricCrypto(SymmetricAlgorithm.AES,key);Stringjsondata=aes.encryptHex("中国test");System.out.println(jsondata);//......
  • vue+elementui实现树形结构表格且合并同一个children的单元格
    1、实现效果2、结构代码(给table添加classname)3、通过设置css实现合并同一个children的单元格.nonRelationalDatabase{//去除横向边框::v-deep.el-table__row{  td{   border-bottom:none!important;  } }//......
  • Hutool—雪花算法
    一、介绍Hutool工具:   官网地址:简介|Hutool   Hutool是一个Java工具库,其中包含了各种实用的工具类和方法。通过静态方法封装,降低相关API的学习成本,提高工作效率,使Java拥有函数式语言般的优雅,让Java语言也可以“甜甜的”。Hutool中的工具方法来自每个用户的精雕细琢,......
  • 怎么把具有树形父子结构的对象集合存到对应的树形父子结构表里呢
     可以采用如下步骤:创建一个Map,key是对象的id,value是对象本身。遍历对象集合,将对象及其所有子对象都添加到Map中。迭代Map中的对象,检测其父节点是否存在,存在则设置其父id。最后遍历Map中的所有对象,按照父id顺序插入数据库表中。具体......