摘要

本文介绍了Hutool工具的常用API用法。

了解hutool

Hutool是一个第三方Java工具类库,通过静态方法封装,提高开发效率,减少代码冗余和潜在Bug。

hutool官网文档:hutool.cn/docs/#/

引入依赖

<!-- hutool工具包 -->
<dependency>
    <groupId>cn.hutool</groupId>
    <artifactId>hutool-all</artifactId>
    <version>5.8.29</version>
</dependency>

图片

常用的API举例

1)字符串

import cn.hutool.core.convert.Convert;
import cn.hutool.core.text.CharSequenceUtil;
import cn.hutool.core.util.StrUtil;

public static void main(String[] args) {
    // 判断字符串是否为空(null 或空白)
    System.out.println(CharSequenceUtil.isBlank("")); //输出 true
    System.out.println(StrUtil.isBlank("")); // true
    System.out.println(StrUtil.isNotBlank(" ")); // false
    
    // 字符串格式化
    System.out.println(StrUtil.format("姓名:{},年龄:{}""张三"25)); // 姓名:张三,年龄:25
    
    // 替换字符串
    System.out.println(StrUtil.replace("2025-01-01""-""/")); // 2025/01/01
    
    // 隐藏中间部分字符
    System.out.println(StrUtil.hide("张三李四王五"14)); // 张***王五
    
    // 类型转换
    System.out.println(Convert.convert(String.class,"张三")); //输出 张三
    System.out.println(Convert.toStr(123456789"默认值")); // 123456789
    System.out.println(Convert.toInt("123abc"0)); // 123(忽略非数字部分)
}

2)集合

import cn.hutool.core.collection.CollUtil;

public static void main(String[] args) {
    // 创建集合
    List<String> list = CollUtil.newArrayList("A""B""C");
    Map<String, Integer> map = MapUtil.newHashMap();
    map.put("Java"10);
    map.put("Python"8);
    
    // 判断集合是否为空
    System.out.println(CollUtil.isEmpty(list)); // false
    System.out.println(CollUtil.isNotEmpty(map)); // true
    
    // 获取子集
    List<String> subList = CollUtil.sub(list, 02);
    System.out.println(subList); // [A, B]
    
    // 集合去重
    List<Integer> nums = CollUtil.newArrayList(1223);
    Set<Integer> uniqueSet = CollUtil.newHashSet(nums);
    System.out.println(uniqueSet); // [1, 2, 3]
}

3)日期

import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateField;

public static void main(String[] args) {
   // 当前时间
    DateTime now = DateTime.now();
    System.out.println(now); // 2025-07-01 12:34:56
    
    // 格式化日期
    System.out.println(DateUtil.format(now, "yyyy-MM-dd HH:mm:ss")); // 2025-07-01 12:34:56
    
    // 时间偏移 这里是一月中的第几天
    DateTime tomorrow = now.offsetNew(DateField.DAY_OF_MONTH, 1);
    System.out.println(tomorrow); // 2025-07-02 12:34:56
    
    // 日期比较
    System.out.println(now.isAfter(tomorrow)); // false
    System.out.println(now.isBefore(tomorrow)); // true
}

4)json

import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import cn.hutool.json.JSONArray;

public static void main(String[] args) {
    // 解析 JSON 字符串
    String jsonStr = "{"name":"2","age":12,"detailInfo":[{"address":"北京", "phone": "12345678"}]}";
    JSONObjectjsonObject = JSONUtil.parseObj(jsonStr);//字符串必须是{}这种格式
    System.out.println(jsonObject.getStr("name")); //输出 2
    System.out.println(jsonObject.getJSONArray("detailInfo")); //输出 [{"address":"北京","phone":"12345678"}]

    // 创建 JSON 对象
    JSONObject newJson = JSONUtil.createObj().set("id"1001).set("status""active");
    System.out.println(newJson.toString()); // {"id":1001,"status":"active"}

    // 创建 JSON 数组
    String jsonStr2 = "[{"name":"2","age":12}]";
    JSONArray jsonArray = JSONUtil.parseArray(jsonStr2); //[{开头
    System.out.println(jsonArray.getJSONObject(0).getStr("name")); //输出 2

    // 将 JSON 数组转换成字符串
    String jsonStr1 = JSONUtil.toJsonStr(jsonArray);
    System.out.println(jsonStr1); //输出 [{"name":"2","age":12}]

    // Bean 转 Map
    User user = new User();
    user.setName("test");
    user.setAge(100);
    Map<String, Object> userMap = BeanUtil.beanToMap(user);
    System.out.println(userMap); // 输出 {name=test, age=100}

    // Map 转 Bean
    User newUser = BeanUtil.toBean(userMap, User.class);
    System.out.println(newUser.getName()); // 输出 test
}

static class User {
    private String name;
    privateint age;

    public String getName() {
       return name;
    }

    public void setName(String name) {
       this.name = name;
    }

    public int getAge() {
       return age;
    }

    public void setAge(int age) {
       this.age = age;
    }
}

5)token模拟

import cn.hutool.core.date.DateField;
import cn.hutool.core.date.DateTime;
import cn.hutool.jwt.JWT;
import cn.hutool.jwt.JWTPayload;
import cn.hutool.jwt.JWTUtil;

import java.util.HashMap;
import java.util.Map;

public static void main(String[] args) {
    String KEY = "secret_key"; // 密钥

    Map<String, Object> payload = new HashMap<>();
    DateTime now = DateTime.now();
    payload.put(JWTPayload.ISSUED_AT, now);
    payload.put(JWTPayload.EXPIRES_AT, now.offsetNew(DateField.HOUR, 24)); // 24小时后过期
    payload.put(JWTPayload.NOT_BEFORE,  now);
    payload.put("userid", "xx");
    payload.put("username", "xxx");
    String token = JWTUtil.createToken(payload, KEY.getBytes());
    System.out.println("生成的 Token:" + token); // 输出 eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOjE2MjEyMjEyMjIsImV4cCI6MTYyMTIyMjIyMiwibm90X2JlZm9yZSI6MTYyMTIyMjIyMiwic3ViIjoieHh4In0.XxXxXxXxXxXxXxXxXxXxXxXxXxXxXx
    
    JWT jwt = JWTUtil.parseToken(token).setKey(KEY.getBytes());
    boolean verify = jwt.verify();// 验证token是否有效
    System.out.println("Token 是否有效:" + verify); // 输出 true
    System.out.println("用户名:" + jwt.getPayload("username")); // 输出 xxx
}

6)加密

import cn.hutool.crypto.SecureUtil;
import cn.hutool.crypto.digest.MD5;

public static void main(String[] args) {
    // MD5 加密
    System.out.println(SecureUtil.md5("test")); //输出 098f6bcd4621d373cade4e832627b4f6

    // MD5 生成文件摘要
    MD5 md5 = SecureUtil.md5();
    System.out.println(md5.digestHex("1")); //输出 c4ca4238a0b923820dcc509a6f75849b

    // SHA-256 加密
    System.out.println(SecureUtil.sha256("test")); //输出 9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08
}

总结

以上我们了解了hutool常用的6类API,字符串、集合、日期、JSON串、token及加密,更多API用法可直接访问官网doc地址。

关注公众号:咖啡Beans

在这里,我们专注于软件技术的交流与成长,分享开发心得与笔记,涵盖编程、AI、资讯、面试等多个领域。无论是前沿科技的探索,还是实用技巧的总结,我们都致力于为大家呈现有价值的内容。期待与你共同进步,开启技术之旅。

本站提供的所有下载资源均来自互联网,仅提供学习交流使用,版权归原作者所有。如需商业使用,请联系原作者获得授权。 如您发现有涉嫌侵权的内容,请联系我们 邮箱:[email protected]