Hutool中常用的工具类和方法
前言
最近发现一个好用的工具类库Hutool,在开发中使用起来是非常方便!!!本文主要介绍Hutool工具类类库记录java开发中,常用的外部工具类
,使用这些工具类能大大提高开发的效率。
Hutool是一个小而全的Java工具类库,通过静态方法封装,降低相关API的学习成本,提高工作效率,是项目中“util”包友好的替代,它节省了开发人员对项目中公用类和公用工具方法的封装时间,使开发专注于业务,同时可以最大限度的避免封装不完善带来的bug。
依赖引入
🍊Maven
在项目的pom.xml的dependencies中加入以下内容:
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.7.15</version>
</dependency>
🍐Gradle
implementation 'cn.hutool:hutool-all:5.7.15'
组件
文档
常用工具类
类型转换工具类-Convert
万能类型转换器以及各种类型转换的实现类,其中Convert为转换器入口,提供各种toXXX方法和convert方法
//转换为字符串
int a = 1;
String aStr = Convert.toStr(a);
//转换为指定类型数组
String[] b = {"1", "2", "3", "4"};
Integer[] bArr = Convert.toIntArray(b);
//转换为日期对象
String dateStr = "2017-05-06";
Date date = Convert.toDate(dateStr);
//转换为列表
String[] strArr = {"a", "工", "具", "d"};
List<String> strList = Convert.toList(String.class, strArr);
日期时间工具-DateUtil
日期时间工具类,定义了一些常用的日期时间操作方法。JDK自带的Date和Calendar对象真心不好用,有了它操作日期时间就简单多了!
//Date、long、Calendar之间的相互转换
//当前时间
Date date = DateUtil.date();
//Calendar转Date
date = DateUtil.date(Calendar.getInstance());
//时间戳转Date
date = DateUtil.date(System.currentTimeMillis());
//自动识别格式转换
String dateStr = "2017-03-01";
date = DateUtil.parse(dateStr);
//自定义格式化转换
date = DateUtil.parse(dateStr, "yyyy-MM-dd");
//格式化输出日期
String format = DateUtil.format(date, "yyyy-MM-dd");
//获得年的部分
int year = DateUtil.year(date);
//获得月份,从0开始计数
int month = DateUtil.month(date);
//获取某天的开始、结束时间
Date beginOfDay = DateUtil.beginOfDay(date);
Date endOfDay = DateUtil.endOfDay(date);
//计算偏移后的日期时间
Date newDate = DateUtil.offset(date, DateField.DAY_OF_MONTH, 2);
//计算日期时间之间的偏移量
long betweenDay = DateUtil.between(date, newDate, DateUnit.DAY);
//计算时间差
long betweenDay = DateUtil.between(date1, date2, DateUnit.DAY);
字符串工具-StrUtil
字符串工具类,定义了一些常用的字符串操作方法。StrUtil
比StringUtil
名称更短,用起来也更方便!
//判断是否为空字符串
String str = "test";
StrUtil.isEmpty(str);
StrUtil.isNotEmpty(str);
//去除字符串的前后缀
String fileName = StrUtil.removeSuffix("test.jpg", ".jpg")
String fileName = StrUtil.removePrefix("test.jpg", ".jpg")
//格式化字符串
String template = "你好,我是{}";
String str2 = StrUtil.format(template, "test");
文件工具类-FileUtil
在IO操作中,用来解决大部分的文件操作问题。
//新建文件夹
FileUtil.mkdir("D:\");
//新建文件
FileUtil.file("D:\", "F:\");
//新建临时文件
FileUtil.createTempFile(FileUtil.file("D:\"));
//是否非空,是否为目录,是否为文件
FileUtil.isEmpty(FileUtil.file("D:\"));
FileUtil.isDirectory("D:\");
FileUtil.isFile("D:\");
数组工具-ArrayUtil
数组工具类主要是解决对象数组(包括包装类型数组)和原始类型数组使用方法不统一的问题。
//判空
int[] a = {};
int[] b = null;
ArrayUtil.isEmpty(a);
ArrayUtil.isEmpty(b);
//新建泛型数组
String[] newArray = ArrayUtil.newArray(String.class, 3);
//泛型数组合并
int[] result = ArrayUtil.addAll(a, b);
//过滤
Integer[] a = {1,2,3,4,5,6};
// [2,4,6]
Integer[] filter = ArrayUtil.filter(a, (Editor<Integer>) t -> (t % 2 == 0) ? t : null);
//是否包含
boolean flag = ArrayUtil.contains(a, 1);
//使用间隔符将一个数组转为字符串
String result = ArrayUtil.join(new int[]{1,2,3,4}, "-");
集合工具-CollUtil
集合操作的工具类,定义了一些常用的集合操作。
//数组转换为列表
String[] array = new String[]{"a", "b", "c", "d", "e"};
List<String> list = CollUtil.newArrayList(array);
//join:数组转字符串时添加连接符号
String joinStr = CollUtil.join(list, ",");
LOGGER.info("collUtil join:{}", joinStr);
//将以连接符号分隔的字符串再转换为列表
List<String> splitList = StrUtil.split(joinStr, ',');
LOGGER.info("collUtil split:{}", splitList);
//创建新的Map、Set、List
HashMap<Object, Object> newMap = CollUtil.newHashMap();
HashSet<Object> newHashSet = CollUtil.newHashSet();
ArrayList<Object> newList = CollUtil.newArrayList();
//判断列表是否为空
CollUtil.isEmpty(list);
数字工具-NumberUtil
数字处理工具类,可用于各种类型数字的加减乘除操作及类型判断。
//封装BigDecimal中的方法来保留小数
double te1=123456.123456;
double te2=123456.128456;
Console.log(round(te1,4));//结果:123456.1235
Console.log(round(te2,4));//结果:123456.1285
//对float、double、BigDecimal做加减乘除操作
result = NumberUtil.add(te1, te2);
result = NumberUtil.sub(te1, te2);
result = NumberUtil.mul(te1, te2);
result = NumberUtil.div(te1, te2);
//保留两位小数
BigDecimal roundNum = NumberUtil.round(te1, 2);
String te3 = "1.234";
//判断是否为数字、整数、浮点数、质数
NumberUtil.isNumber(te1);
NumberUtil.isInteger(te1);
NumberUtil.isDouble(te1);
NumberUtil.isPrimes(te1)
Bean工具-BeanUtil
JavaBean工具类,可用于Map与JavaBean对象的互相转换以及对象属性的拷贝。
// Bean转Map
SubPerson person = new SubPerson();
person.setAge(14);
person.setOpenid("11213232");
person.setName("测试A11");
person.setSubName("sub名字");
Map<String, Object> map = BeanUtil.beanToMap(person);
//Map转Bean
SubPerson person = BeanUtil.mapToBean(map, SubPerson.class, false);
//Bean属性拷贝
SubPerson copyPerson = new SubPerson();
BeanUtil.copyProperties(person, copyPerson);
加密解密工具-SecureUtil
SecureUtil
主要针对常用加密算法构建快捷方式,还有提供一些密钥生成的快捷工具方法,可用于MD5加密。
//MD5加密
String str = "123456";
String md5Str = SecureUtil.md5(str);
验证码工具-CaptchaUtil
验证码工具类,可用于生成图形验证码。
//生成验证码图片
LineCaptcha lineCaptcha = CaptchaUtil.createLineCaptcha(200, 100);
try {
request.getSession().setAttribute("CAPTCHA_KEY", lineCaptcha.getCode());
response.setContentType("image/png");//告诉浏览器输出内容为图片
response.setHeader("Pragma", "No-cache");//禁止浏览器缓存
response.setHeader("Cache-Control", "no-cache");
response.setDateHeader("Expire", 0);
lineCaptcha.write(response.getOutputStream());
} catch (IOException e) {
e.printStackTrace();
}
字段验证器-Validator
字段验证器,可以对不同格式的字符串进行验证,比如邮箱、手机号、IP等格式。
//判断是否为邮箱地址
boolean result = Validator.isEmail("macro@qq.com");
//判断是否为手机号码
result = Validator.isMobile("18911111111");
//判断是否为IPV4地址
result = Validator.isIpv4("192.168.5.130");
//判断是否为汉字
result = Validator.isChinese("你好");
//判断是否为身份证号码(18位中国)
result = Validator.isCitizenId("123456");
//判断是否为URL
result = Validator.isUrl("http://www.baidu.com");
其他工具类
Hutool中的工具类很多,可以参考:https://www.hutool.cn/
111111");
//判断是否为IPV4地址
result = Validator.isIpv4(“192.168.5.130”);
//判断是否为汉字
result = Validator.isChinese(“你好”);
//判断是否为身份证号码(18位中国)
result = Validator.isCitizenId(“123456”);
//判断是否为URL
result = Validator.isUrl(“http://www.baidu.com”);
## 其他工具类
Hutool中的工具类很多,可以参考:https://www.hutool.cn/