您现在的位置是:首页 > 编程 > 

Hutool工具包

2025-07-23 20:14:57
Hutool工具包 一、简介Hutool是一个小而全的Java工具类库,通过静态方法封装,降低相关API的学习成本,提高工作效率Hutool是项目中“util”包友好的替代,它节省了开发人员对项目中公用类和公用工具方法的封装时间一个Java基础工具类,对文件、流、加密解密、转码、正则、线程、XML等JDK方法进行封装,组成各种Util工具类,同时提供以下组件:在这里插入图片描述可以根据需求对每个模

Hutool工具包

一、简介
  • Hutool是一个小而全的Java工具类库,通过静态方法封装,降低相关API的学习成本,提高工作效率
  • Hutool是项目中“util”包友好的替代,它节省了开发人员对项目中公用类和公用工具方法的封装时间
  • 一个Java基础工具类,对文件、流、加密解密、转码、正则、线程、XML等JDK方法进行封装,组成各种Util工具类,同时提供以下组件:
在这里插入图片描述
  • 可以根据需求对每个模块单独引入,也可以通过引入hutool-all方式引入所有模块
代码语言:javascript代码运行次数:0运行复制
<dependency>
    <groupId>cn.hutool</groupId>
    <artifactId>hutool-all</artifactId>
    <version>5.8.11</version>
</dependency>
二、常见类型转换

1、转换为字符串

代码语言:javascript代码运行次数:0运行复制
int a = 1;
//aStr为"1"
String aStr = (a);

long[] b = {1,2,,4,5};
//bStr为:"[1, 2, , 4, 5]"
String bStr = (b);

2、转换为指定类型数组

代码语言:javascript代码运行次数:0运行复制
String[] b = { "1", "2", "", "4" };
//结果为Integer数组
Integer[] intArray = (b);

long[] c = {1,2,,4,5};
//结果为Integer数组
Integer[] intArray2 = (c);

String[] d = { "1", "2", "", "4" };
//结果为BigDecimal数组
//umber是BigDecimal的父类
umber[] numbers = (d);

、转换为日期对象

代码语言:javascript代码运行次数:0运行复制
String a = "2017-05-06";
// 转换为Date
Date date = (a);
// 转换为LocalDateTime
LocalDateTime localDateTime = (a);

4、转换为集合

代码语言:javascript代码运行次数:0运行复制
String[] strArray = {"a", "b", "c"};
List<String> list = (, strArray);

5、指定泛型

代码语言:javascript代码运行次数:0运行复制
Object[] a = { "a", "你", "好", "", 1 };
List<String> list = (new TypeReference<List<String>>() {}, a);

6、转换为指定类型

代码语言:javascript代码运行次数:0运行复制
User u = new User("1002","tom",18);
Person p = (, u);
三、时间日期

1、当前时间字符串

代码语言:javascript代码运行次数:0运行复制
//当前时间 yyyy-MM-dd HH:mm:ss
Date date = DateUtil.date();

//当前时间字符串,格式:yyyy-MM-dd HH:mm:ss
String now = ();

//当前日期字符串,格式:yyyy-MM-dd
String today= ();

2、字符串转Date

  • DateUtil.parse方法会自动识别一些常用格式,包括:
    • yyyy-MM-dd HH:mm:ss
    • yyyy/MM/dd HH:mm:ss
    • yyyy年MM月dd日 HH时mm分ss秒
    • yyyyMMdd
    • yyyy-MM-dd
    • yyyy.MM.dd
    • HH:mm:ss
    • yyyy-MM-dd HH:mm:ss.SSS
    • yyyyMMddHHmmss
代码语言:javascript代码运行次数:0运行复制
String dateStr = "2017-0-01";
Date date = DateUtil.parse(dateStr);

也可以使用自定义日期格式转化:

代码语言:javascript代码运行次数:0运行复制
String dateStr = "2017-0-01 10:10:20";
Date date = DateUtil.parse(dateStr, "yyyyMMdd");

、Date转字符串

代码语言:javascript代码运行次数:0运行复制
// 当前时间
Date date = DateUtil.date();

//结果 202/0/27
String format = DateUtil.format(date, "yyyy/MM/dd");

//常用格式的格式化,结果:202-0-27
String formatDate = DateUtil.formatDate(date);

//结果:202-0-27 1:59:5
String formatDateTime = DateUtil.formatDateTime(date);

//结果:1:59:5
String formatTime = DateUtil.formatTime(date);

//结果:20207117186
String formatStr1 = DateUtil.format(date, DatePattern.PURE_DATETIME_PATTER);
String formatStr2 = DateUtil.format(date, "yyyyMMddHHmmss");

4、获取Date对象的某个部分

代码语言:javascript代码运行次数:0运行复制
Date date = DateUtil.date();
//获得年的部分 int类型
DateUtil.year(date);
//获得月份,从0开始计数,int类型
(date);
//获得月份枚举
Enum(date);
//获取日期是星期几,1表示周日,2表示周一,int类型
DateUtil.dayOfWeek(date);
//获取日期是所在年的第几天
DateUtil.dayOfYear(date);

5、开始和结束时间

代码语言:javascript代码运行次数:0运行复制
//当前时间
Date date = DateUtil.date();

//一天的开始,结果:202-0-27 00:00:00
Date beginOfDay = DateUtil.beginOfDay(date);

//一天的结束
// MySQL数据库对于毫秒大于500的数据进行进位,如果用time,入库会变成第二天时间 00:00:00
Date time = (new Date());
Date time1 = (DateUtil.date()).offset(DateField.MILLISECOD, -999);

// 202-07-17 2:59:59,999
String format = DateUtil.format(time, "yyyy-MM-dd HH:mm:ss,SSS");
// 202-07-17 2:59:59,000
String format1 = DateUtil.format(time1, "yyyy-MM-dd HH:mm:ss,SSS");

6、日期时间偏移

代码语言:javascript代码运行次数:0运行复制
String dateStr = "2017-0-01 22::2";
Date date = DateUtil.parse(dateStr);

//加2天 结果:2017-0-0 22::2
Date newDate = (date, DateField.DAY_OF_MOTH, 2);

//加天 常用偏移,结果:2017-0-04 22::2
DateTime newDate2 = Day(date, );

//减个小时 常用偏移,结果:2017-0-01 19::2
DateTime newDate = Hour(date, -);

7、日期时间对象-DateTime

  • DateTime类继承于java.util.Date类,为Date类扩展了众多简便方法
  • 这些方法多是DateUtil静态方法的对象表现形式,使用DateTime对象可以完全替代开发中Date对象的使用
7.1、创建对象
代码语言:javascript代码运行次数:0运行复制
Date date = new Date();

//方式一
DateTime time = new DateTime(date);
//方式二
DateTime dt = (date);
//方式三
DateTime dateTime = new DateTime();
//方式四
DateTime now = ();
7.2、DateTime转字符串
代码语言:javascript代码运行次数:0运行复制
DateTime dateTime = new DateTime("2017-01-05 12:4:2", DatePattern.ORM_DATETIME_FORMAT);
//结果:2017-01-05 12:4:2
String dateStr = ();
//结果:20170105
String dateString = ("yyyyMMdd");
四、工具类

1、字符串工具-StrUtil

1.1、移除字符串的前缀后缀
代码语言:javascript代码运行次数:0运行复制
// 去掉指定后缀 fileame -> girl
String fileame = StrUtil.removeSuffix("girl.jpg", ".jpg");

// 去掉指定前缀 suffix -> jpg
String suffix = StrUtil.removePrefix("girl.jpg", "girl.");
1.2、字符串填充
代码语言:javascript代码运行次数:0运行复制
// 字符串前填充 结果:"00abc"
StrUtil.fillBefore("abc", '0', 5);

// 字符串前填充 结果:"abc111"
StrUtil.fillAfter("abc", '1', 6);
1.、指定分隔符字符串与集合互转⭐️
代码语言:javascript代码运行次数:0运行复制
String str = "a,b,c";
// 转为集合
List<String> list = StrUtil.split(str, ','); // 结果:[a, b, c]

// 转为‘-’分割字符串
// 方式一:list可以是String或者Long类型集合
String join1 = StrUtil.join(",", list); // 结果:a-b-c
// 方式二:list只能String类型集合,否则报错
String join2 = String.join(",", list); // 结果:a-b-c
1.4、获取字符串根据指定字符切分的前后
代码语言:javascript代码运行次数:0运行复制
String str = "1-状态";
// 结果:1
String beforeStr = StringUtil.substringBefore(str, "-");
// 结果:状态
String afterStr = StringUtil.substringAfter(str, "-");
1.5、标点符号字符串常量定义
代码语言:javascript代码运行次数:0运行复制
/**
 * 常用字符串常量定义
 */
public interface StrPool {
	/**
	 * 字符串常量:制表符 {@code "\t"}
	 */
	String TAB = "	";

	/**
	 * 字符串常量:点 {@code "."}
	 */
	String DOT = ".";

	/**
	 * 字符串常量:双点 {@code ".."} <br>
	 * 用途:作为指向上级文件夹的路径,如:{@code "../path"}
	 */
	String DOUBLE_DOT = "..";

	/**
	 * 字符串常量:斜杠 {@code "/"}
	 */
	String SLASH = "/";

	/**
	 * 字符串常量:反斜杠 {@code "\\"}
	 */
	String BACKSLASH = "\\";

	/**
	 * 字符串常量:回车符 {@code "\r"} <br>
	 * 解释:该字符常用于表示 Linux 系统和 MacOS 系统下的文本换行
	 */
	String CR = "\r";

	/**
	 * 字符串常量:换行符 {@code "\n"}
	 */
	String LF = "\n";
	
	...

}

2、数字工具-umberUtil

2.1、加减乘除
  • umberUtil.add 针对数字类型做加法
  • umberUtil.sub 针对数字类型做减法
  • 针对数字类型做乘法
  • umberUtil.div 针对数字类型做除法,并提供重载方法用于规定除不尽的情况下保留小数位数和舍弃方式
代码语言:javascript代码运行次数:0运行复制
 // 结果:5.062
 BigDecimal bigDecimal = new BigDecimal("10.124");
 BigDecimal decimal = umberUtil.div(bigDecimal, 2,);
2.2、随机数
代码语言:javascript代码运行次数:0运行复制
//返回1~10000的两个随机数
int[] ints = umberUtil.generateRandomumber(1, 10000, 2);

、数组工具-ArrayUtil

.1、指定元素所在位置
代码语言:javascript代码运行次数:0运行复制
String [] array = {"a","b","c"};
// 结果:1
int index = ArrayUtil.indexOf(array, "b");
.2、最大值和最小值
代码语言:javascript代码运行次数:0运行复制
String [] array = {"a","b","c"};
// 结果:"a"
String min = (array);
// 结果:"c"
String max = (array);

4、随机工具-RandomUtil

4.1、获得随机数int值
代码语言:javascript代码运行次数:0运行复制
// 结果:2075115567
int randomInt = RandomUtil.randomInt();
4.2、获得指定范围内的随机数
  • 最小数(包含
  • 最大数(不包含
代码语言:javascript代码运行次数:0运行复制
// 结果:77
int randomInt = RandomUtil.randomInt(10,100);

// 结果:12  获取0~20的整数,不包括20
int anInt = RandomUtil.randomInt(20);
4.、获得一个随机固定长度的字符串(只包含数字和字符)
代码语言:javascript代码运行次数:0运行复制
// 结果:jh4gddb0tn
String str = RandomUtil.randomString(10);
4.4、获得一个只包含数字的固定长度字符串
代码语言:javascript代码运行次数:0运行复制
// 结果:7648
String str = RandomUtil.randomumbers(5);

5、树结构工具-TreeUtil

  • 数据库字段及结构如下
在这里插入图片描述
5.1、最简单方式构建Tree
  • Treeode表示一个抽象的节点,也表示数据库中一行数据
    • 第一个参数id
    • 第二个参数父id
    • 第三个参数id的名称
    • 第四个参数顺序,越小优先级越高 默认0(没顺序字段写null就行)
  • TreeUtil.build(nodeList, "0")中的0表示顶层id为0,查询0下级的数据(不包括0)
代码语言:javascript代码运行次数:0运行复制
// 构建node列表
List<Treeode<String>> nodeList = ();

nodeList.add(new Treeode<>("1", "0", "系统管理", 5));
nodeList.add(new Treeode<>("11", "1", "用户管理", 10));
nodeList.add(new Treeode<>("111", "11", "用户添加", 11));
nodeList.add(new Treeode<>("2", "0", "店铺管理", 5));
nodeList.add(new Treeode<>("21", "2", "商品管理", 10));
nodeList.add(new Treeode<>("221", "2", "商品管理2", 11));

// 0表示最顶层的id是0
List<Tree<String>> treeList = TreeUtil.build(nodeList, "0");

展示结果

在这里插入图片描述
5.2、自定义根节点
  • TreeUtil.build(nodeList, "1")中的0表示顶层id为1,查询1-系统管理下级的数据(不包括1-系统管理)
代码语言:javascript代码运行次数:0运行复制
List<Tree<String>> treeList = TreeUtil.build(nodeList, "1");

展示结果

在这里插入图片描述
5.、添加扩展字段
代码语言:javascript代码运行次数:0运行复制
// 构建node列表
List<Treeode<String>> nodeList = ();

// Treeode对象的构建
Treeode<String> treeode = new Treeode<>();
treeode.setId("1");
treeode.setame("系统管理");
treeode.setParentId("0");
// 添加扩展字段
Map<String, Object> map = ();
map.put("k1", RandomUtil.randomInt()); // 随机数
map.put("k2", RandomUtil.randomString(5)); // 随机字符串
treeode.setExtra(map);
// 添加Treeode到列表
nodeList.add(treeode);

// 省略其他Treeode对象的构建
...

// 0表示最顶层的id是0
List<Tree<String>> treeList = TreeUtil.build(nodeList, "0");

展示结果

在这里插入图片描述
5.4、自定义字段
  • 如果数据库中字段不是id、name、parentId如何处理
代码语言:javascript代码运行次数:0运行复制
// 构建node列表
List<Treeode<String>> nodeList = ();

nodeList.add(new Treeode<>("1", "0", "系统管理", 5));
nodeList.add(new Treeode<>("11", "1", "用户管理", 10));
nodeList.add(new Treeode<>("111", "11", "用户添加", 11));
nodeList.add(new Treeode<>("2", "0", "店铺管理", 5));
nodeList.add(new Treeode<>("21", "2", "商品管理", 10));
nodeList.add(new Treeode<>("221", "2", "商品管理2", 11));

// 配置
TreeodeConfig treeodeConfig = new TreeodeConfig();
// 自定义属性名 都要默认值的
treeodeConfig.setWeightKey("order");
treeodeConfig.setIdKey("menuId");
treeodeConfig.setameKey("menuame");
treeodeConfig.setParentIdKey("menuParentId");
treeodeConfig.setChildrenKey("childrenList");

// 转换器
List<Tree<String>> treeList = TreeUtil.build(nodeList, "0", treeodeConfig, new DefaultodeParser<>());

展示结果

在这里插入图片描述
五、Hutool参考文档
  • 碰到开发中用到的,我会同步更新到文档中…
  • 官方链接:
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。 原始发表:2024-06-27,如有侵权请联系 cloudcommunity@tencent 删除开发字符串对象工具类管理

#感谢您对电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格的认可,转载请说明来源于"电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格

本文地址:http://www.dnpztj.cn/biancheng/1163085.html

相关标签:无
上传时间: 2025-07-20 21:14:45
留言与评论(共有 8 条评论)
本站网友 投影仪故障
28分钟前 发表
ss Date date = DateUtil.date(); //当前时间字符串
本站网友 北京罗麦科技
14分钟前 发表
"用户添加"
本站网友 主宰一切
27分钟前 发表
10)); nodeList.add(new Treeode<>("111"
本站网友 丘疹
12分钟前 发表
同时提供以下组件:在这里插入图片描述可以根据需求对每个模块单独引入
本站网友 医疗美容技术专业
20分钟前 发表
"0"
本站网友 巨鹿二手房
26分钟前 发表
2 String dateStr = (); //结果:20170105 String dateString = ("yyyyMMdd");四
本站网友 余杭临平租房
30分钟前 发表
59