Hutool中常用的工具类和方法

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'

组件


文档


📙参考API

📘中文文档

常用工具类


类型转换工具类-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

字符串工具类,定义了一些常用的字符串操作方法。StrUtilStringUtil名称更短,用起来也更方便!


//判断是否为空字符串
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/

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

HaiBian_Ren

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值