Hutool工具包
Hutool工具包
一、简介Hutool是一个小而全的Java工具类库,通过静态方法封装,降低相关API的学习成本,提高工作效率Hutool是项目中“util”包友好的替代,它节省了开发人员对项目中公用类和公用工具方法的封装时间一个Java基础工具类,对文件、流、加密解密、转码、正则、线程、XML等JDK方法进行封装,组成各种Util工具类,同时提供以下组件:在这里插入图片描述可以根据需求对每个模
Hutool工具包
- Hutool是一个小而全的Java工具类库,通过静态方法封装,降低相关API的学习成本,提高工作效率
- Hutool是项目中“util”包友好的替代,它节省了开发人员对项目中公用类和公用工具方法的封装时间
- 一个Java基础工具类,对文件、流、加密解密、转码、正则、线程、XML等JDK方法进行封装,组成各种Util工具类,同时提供以下组件:
- 可以根据需求对每个模块单独引入,也可以通过引入
hutool-all方式引入所有模块
<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
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
针对数字类型做除法,并提供重载方法用于规定除不尽的情况下保留小数位数和舍弃方式
// 结果: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、获得指定范围内的随机数
- 最小数(
包含
) - 最大数(
不包含
)
// 结果: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)
// 构建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-系统管理)
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如何处理
// 构建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<>());
展示结果
- 碰到开发中用到的,我会同步更新到文档中…
- 官方链接:
#感谢您对电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格的认可,转载请说明来源于"电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格
上传时间: 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 |