前言
这是我参与11月更文挑战的第3天,活动详情查看:2021最后一次更文挑战 。还在对项目中的工具类和工具方法进行封装吗?让
Hutool
帮你,它是项目中util
包的友好替代,覆盖了Java
开发底层的方方面面,既是大型项目中解决小问题的利器,也是小项目中的效率担当,它能让你专注业务,极大地提升开发效率,可以最大程度地避免自行封装出现的小问题、小Bug
。所以,学会如何高效、准确地使用项目开发过程中所需的工具方法非常有必要,今天结合使用场景给大家分享一些实用的工具类方法,没讲清楚以及未涉及之处,望大家见谅,具体详情可参见 Hutool 官网 (hutool.cn) 。
引入
Hutool
包含对文件、流、加密解密、转码、正则、线程、XML 等 JDK 方法进行封装,放在不同的模块组件当中,当你需要对 Excel
进行操作时,你可以单独引入 hutool-poi
模块,当然分不清个模块之间功能,图省事,也可以通过引入 hutool-all
方式引入所有模块。
Maven
1 | xml复制代码<dependency> |
Gradle
1 | gradle复制代码implementation 'cn.hutool:hutool-all:5.7.16' |
jar
使用
下面给大伙分享一些经常使用且使用的工具方法,有用到过的欢迎留言评论哦 (^▽^)
Console 对象信息打印类
熟悉 JS
的掘友看到这两个方法一定不陌生,甚至是“旧交”了,其实 Hutool
中 的 Console
对象借鉴的就是 JS
中的语法糖。虽说是打印,和 System.out.println() / System.err.println()
还是有所不同的,最重要的是它支持 Slf4j
的字符串模版语法,会自动将对象(包括数组)转为字符串形式。
代码实例:
1 | java复制代码 |
这里的 {}
作为模版占位符,能够将逗号右边的变量值依次传入,从而以字符串的形式打印输出。
Convert 不同类型之间转换类
该类中封装了针对 Java
常见类型的转换,用于简化类型转换,同时对转换失败的异常捕获有着很好的封装,能够帮你减轻业务代码的臃肿,提升代码的优雅性,该工具类还是非常常用和实用的,必须安利一波୧(๑•̀◡•́๑)૭
代码实例:
1 | java复制代码 |
字符串转为 16 进制(Hex
)和 Unicode
串
1 | java复制代码 |
字符编码方式转换(编码与解码)
1 | java复制代码 |
中文大/小写数字、金额相关转换
1 | java复制代码 |
convertTime(目标值,目标值时间单位,转换后的时间单位)
方法主要用于转换时长单位,比如一个很大的毫秒,我想获得这个毫秒数换算成多少天:
1 | java复制代码 |
原始类型和包装类型之间的转换
1 | java复制代码 |
DateUtil DateTime
日期时间工具类
对于 java.util.Date
对象是不是还停留在被 Thu Nov dd HH:mm:ss CST yyyy
支配的恐惧中?数字英文单词缩写的混杂让人看起来非常不舒服,如果你想将其转换成 yyyy-MM-dd / yyyy-MM-dd HH:mm:ss
时间格式字符串,你是不是得先 new
一个 SimpleDateFormat
,通过 pattern
参数进行初始化格式化器,时间格式不熟练的可能还要百度一下,甚是麻烦。
为了便捷,Hutool
工具使用了一个 DateTime
类来替代之,继承自 Date
,重写了 toString()
方法,直接放回 yyyy-MM-dd HH:mm:ss
形式的字符串,方便在输出时的调用(例如日志记录等),提供了众多便捷的方法对日期对象操作。
代码实例:
1 | java复制代码 |
获取指定天/周/月/季度/年的开始/结束时间,返回 DateTime
,格式为:yyyy-MM-dd HH:mm:ss
1 | java复制代码 |
日期时间偏移:即对某个日期增减分、小时、天等等
1 | java复制代码 |
计算两个时间的间隔
1 | java复制代码 |
ObjectUtil 对象信息打印类
针对 Object
通用的工具类方法,不区分是 String
还是 Object
、Array
还是 Collection
。
代码实例:
判断 null
/ blank string
1 | java复制代码final String blankStr = " "; |
注意: ObjectUtil.isNull() 方法不能判断对象中字段为空的情况,如果需要检查Bean对象中字段是否全空,需使用
BeanUtil.isEmpty()
方法进行判定。
判断两个对象是否相等,等价于 Objects.equals()
方法
1 | java复制代码 |
计算对象长度
1 | java复制代码 |
如果是字符串调用其 length()
方法,集合类调用其 size()
方法,数组调用其length
属性,其他可遍历对象遍历计算长度。
StrUtil 处理字符串工具
↑ 和这个类类似,但是相较于 StringUtils
这个类写起来更短,更能偷懒 [狗头],类中常用的方法有 isBlank()
、isNotBlank()
、isEmpty()
、isNotEmpty()
主要用于对字符串的判空,这里就不赘述了。
代码实例:
1 | java复制代码 |
CollUtil | CollStreamUtil 集合处理工具类
这两个类主要封装的是对数组、列表等集合类的操作方法,集合在开发中占很大一部分,必须重点掌握,以提高我们的开发效率。
代码实例:
模拟数据库排序分页,返回一个 PageResult
1 | java复制代码 |
获取表头别名映射
1 | java复制代码 |
建立省名和省份对象之间的 Map
1 | java复制代码 |
将所有省份按照主键 pid
进行分组
1 | java复制代码 |
提取省份信息列表中省份名
1 | java复制代码 |
两个 map
根据 key
进行合并(merge
)操作,最终结果期望为:(key:
pid, value:
province(省份名) + “-“ + abbr(省份简称))
1 | java复制代码 |
RandomUtil 随机工具
RandomUtil
工具类主要是对 Random
对象的封装,用于产生随机数/列表,虽然是伪随机数,但是对于大多数使用场景还是够用的。
代码实例:
1 | java复制代码 |
ExcelUtil Excel 操作工具类
该类是对 Apache
的 POI
库的二次封装,便捷了对 MS Office
文档操作,使用该类时,需要用户执行导入 poi-ooxml
依赖,这个包会自动关联引入 poi
包,可以很好的支持 Office2007+
的文档格式。
注意
开始使用前,需导入依赖:
1 | xml复制代码<dependency> |
未引入使用其中的工具方法,会报错:
1 | console复制代码You need to add dependency of 'poi-ooxml' to your project, and version >= 4.1.2 |
代码实例:
1 | java复制代码// 写入 Excel 中的数据源 |
结尾
撰文不易,欢迎大家点赞、评论,你的关注、点赞是我坚持的不懈动力,感谢大家能够看到这里!Peace & Love。
参考
Overview (hutool-码云(gitee.com))
本文转载自: 掘金