Hutool 被称为 Java 开发界的“瑞士军刀”,它通过静态方法封装了大量常用操作,极大地减少了样板代码。虽然官方并没有一个固定的“Top 100 API”榜单,但根据日常后端开发的高频场景,我整理了最核心、最高频使用的约 100 个 API,按功能模块分类,方便查阅和记忆。

依赖引入 (Maven):

<dependency>
    <groupId>cn.hutool</groupId>
    <artifactId>hutool-all</artifactId>
    <version>5.8.29</version> <!-- 请使用最新版本 -->
</dependency>

1. 字符串工具 (cn.hutool.core.util.StrUtil / CharSequenceUtil)

日常使用频率最高,替代 Apache Commons Lang 的 StringUtils

功能

常用 API

说明

判空

isEmpty(str)

判断是否为 null 或 ""

isNotEmpty(str)

判断是否非空

isBlank(str)

判断是否为 null、"" 或纯空格

isNotBlank(str)

判断是否非空白

格式化

format("{} is {}", name, age)

类似 Slf4j 的占位符格式化

截取

sub(str, start, end)

截取子串

subBefore(str, separator, isFromEnd)

截取分隔符前的内容

subAfter(str, separator, isFromEnd)

截取分隔符后的内容

转换

toCamelCase(str)

转小驼峰 (user_name -> userName)

toUnderlineCase(str)

转下划线 (userName -> user_name)

upperFirst(str) / lowerFirst(str)

首字母大写/小写

填充

padPre(str, size, padChar)

左侧填充 (如补零)

padAfter(str, size, padChar)

右侧填充

其他

trim(str)

去除首尾空格

split(str, separator)

分割字符串

join(",", list)

集合转字符串

reverse(str)

反转字符串

equals(str1, str2)

安全比较 (避免 NPE)

contains(str, sub)

是否包含子串


2. 集合工具 (cn.hutool.core.collection.CollUtil)

处理 List, Set, Map 的神器

功能

常用 API

说明

创建

newArrayList(), newLinkedList()

快速创建集合

newHashSet(), newLinkedHashSet()

快速创建 Set

newHashMap(), newLinkedHashMap()

快速创建 Map

判空

isEmpty(collection)

判断集合是否为 null 或空

isNotEmpty(collection)

判断非空

转换

toList(collection)

转 List

toSet(collection)

转 Set

collToMap(list, keyFunc)

列表转 Map (Java8 风格)

操作

union(list1, list2)

并集

intersection(list1, list2)

交集

difference(list1, list2)

差集

distinct(list)

去重

sort(list, comparator)

排序

getFirst(list)

安全获取第一个元素

addAll(target, source)

批量添加


3. 日期时间工具 (cn.hutool.core.date.DateUtil)

彻底告别 SimpleDateFormat 的线程安全问题

功能

常用 API

说明

当前时间

now()

获取当前 Date

today()

获取今天日期 (Date)

currentMillis()

当前时间戳 (long)

格式化

format(date)

默认格式 yyyy-MM-dd HH:mm:ss

format(date, "yyyy/MM/dd")

自定义格式

parse("2023-01-01")

字符串转 Date

parse("2023-01-01", "yyyy/MM/dd")

自定义格式解析

计算

offsetDay(date, 1)

加 1 天

offsetHour(date, -2)

减 2 小时

betweenMs(start, end)

计算毫秒差

betweenDay(start, end)

计算天数差

特殊值

beginOfDay(date)

当天开始时间 (00:00:00)

endOfDay(date)

当天结束时间 (23:59:59)

age(birthday)

计算年龄

其他

date(millis)

时间戳转 Date

isWeekend(date)

是否周末


4. 类型转换工具 (cn.hutool.core.convert.Convert)

万能转换器,减少 try-catch

功能

常用 API

说明

转字符串

toStr(obj)

任意对象转 String (null 转 "")

toStr(obj, defaultValue)

带默认值

转数字

toInt(obj)

转 int

toLong(obj)

转 long

toDouble(obj)

转 double

转布尔

toBool(obj)

转 boolean ("true", 1, true 都变 true)

转日期

toDate(obj)

转 Date

转数组

toArray(String.class, str)

字符串转数组

转集合

toCollection(List.class, obj)

转集合

其他

charset(str, oldCharset, newCharset)

编码转换


5. JSON 工具 (cn.hutool.json.JSONUtil)

内置轻量级 JSON 库,无需引入 Jackson/Fastjson 即可处理简单场景

功能

常用 API

说明

序列化

toJsonStr(obj)

对象转 JSON 字符串

toJsonPrettyStr(obj)

格式化(美化)输出

反序列化

toBean(jsonStr, Class)

JSON 字符串转 Java 对象

toList(jsonStr, Class)

JSON 数组转 List

解析操作

parseObj(jsonStr)

转为 JSONObject (可链式调用)

parseArray(jsonStr)

转为 JSONArray

判断

isTypeJSON(str)

判断是否是 JSON 格式

Map 操作

beanToMap(obj)

对象转 Map

mapToBean(map, Class)

Map 转对象


6. 文件与 IO 工具 (cn.hutool.core.io.FileUtil / IoUtil)

简化文件读写,自动处理流关闭

功能

常用 API

说明

读取

readUtf8String(file)

读取整个文件为字符串

readLines(file)

读取为 List

getInputStream(file)

获取输入流

写入

writeUtf8String(content, file)

写入字符串 (覆盖)

appendUtf8String(content, file)

追加字符串

writeLines(lines, file)

写入多行

操作

mkdir(dir)

创建目录 (不存在则创建)

copy(src, dest)

复制文件/目录

move(src, dest)

移动文件

del(file)

删除文件/目录

exists(file)

判断是否存在

getSuffix(file)

获取后缀名

流工具

close(closeable)

安全关闭流 (无异常抛出)

readBytes(inputStream)

流转字节数组


7. HTTP 客户端 (cn.hutool.http.HttpUtil)

基于 HttpURLConnection 的封装,无需引入 HttpClient

功能

常用 API

说明

GET

get(url, paramMap)

发送 GET 请求,返回 String

POST

post(url, paramMap)

发送表单 POST 请求

postJson(url, jsonStr)

发送 JSON 请求 (RESTful 常用)

下载

downloadFile(url, destPath)

下载文件到本地

上传

upload(url, fileMap)

上传文件

配置

createGet(url).timeout(5000).execute()

链式调用设置超时、Header 等


8. 加密与安全 (cn.hutool.crypto.SecureUtil / DigestUtil)

一行代码实现常用加密

功能

常用 API

说明

MD5

md5(str)

MD5 摘要 (32 位小写)

SHA

sha256(str)

SHA-256 摘要

Base64

encodeBase64(bytes)

编码

decodeBase64(str)

解码

AES

aes.encrypt(data, key)

AES 加密

aes.decrypt(data, key)

AES 解密

RSA

generateKeyPair(1024)

生成 RSA 密钥对

UUID

randomUUID()

生成随机 UUID

随机数

randomInt(min, max)

生成随机整数


9. 对象与 Bean 工具 (cn.hutool.core.bean.BeanUtil / ObjectUtil)

替代 Spring 的 BeanUtils,支持深浅拷贝

功能

常用 API

说明

拷贝

copyProperties(source, target)

属性拷贝 (浅拷贝)

toBean(map, Class)

Map 转 Bean

beanToMap(bean)

Bean 转 Map

判断

isNull(obj) / isNotNull(obj)

判空

equals(obj1, obj2)

安全比较

反射

getFieldValue(obj, fieldName)

获取字段值 (反射)

setFieldValue(obj, fieldName, value)

设置字段值

ID

objectId(obj)

获取对象的 hashCode 字符串


10. 其他高频工具

模块

类名

常用 API

说明

系统

SystemUtil

getJvmInfo(), getOsInfo()

获取 JVM 和操作系统信息

线程

ThreadUtil

sleep(ms), execute(runnable)

安全休眠和执行

正则

ReUtil

getGroup0(pattern, content)

提取正则匹配内容

身份证

IdcardUtil

isValidCard(id)

校验身份证号

货币

MoneyUtil

parse(str)

金额解析和格式化

压缩

ZipUtil

zip(src, dest)

文件/文件夹压缩

图片

ImgUtil

scale(img, width, height)

图片缩放、裁剪、水印

二维码

QrUtil

generate(content, outputPath)

生成二维码

cron

CronUtil

schedule(cronExpr, runnable)

简易定时任务调度

树形

TreeUtil

build(list)

列表转树形结构 (菜单常用)

最佳实践建议

  1. 判空首选:尽量用 StrUtil.isEmpty()CollUtil.isEmpty() 代替手写的 obj == null || obj.length() == 0

  2. 日期处理:彻底放弃 SimpleDateFormat,全面转向 DateUtil 或 Java 8 的 LocalDateTime (Hutool 也提供了 LocalDateTimeUtil)。

  3. JSON 轻量场景:如果是内部微服务调用或简单的配置解析,直接用 JSONUtil 可以减少一个重型依赖(如 Jackson)。但在对外接口或复杂映射场景,仍建议使用 Jackson/Fastjson。

  4. 文件流:使用 FileUtilIoUtil 可以完全不用写 try-catch-finally 来关闭流。