Java - HuTool 使用 ArrayUtil、StrUtil等工具类(一)

Java - HuTool 使用 ArrayUtil、StrUtil等工具类(一)

本篇主要介绍 HuTool工具, 其是 java工具类,对于一些静态方法进行封装,虽然很小,但很全,里面拥有平时我们会用到的工具类,就无需我们自己去封装了

以前我还自己去封装,emmm,我真的太傻了~,但是自己封装也不是不好,但是学会站在巨人的肩膀上,也非常有必要

下面就简单介绍一下 HuTool工具 与 其简单使用

相关链接:

HuTool 工具介绍

Hutool 是一个小而全的 Java工具类库,通过静态方法封装,降低相关API的学习成本,提高工作效率,涵盖了Java开发开发中的方方面面

使用 Hutool 可节省开发人员对项目中公用类和公用工具方法的封装时间,使开发专注于业务,同时可以最大限度的避免封装不完善带来的bug

该工具类主要对 文件、流、加密解密、转码、正则、线程、XML等 JDK方法进行封装,组成各种Util工具类,同时提供以下组件:

模块介绍
hutool-aopJDK动态代理封装,提供非IOC下的切面支持
hutool-bloomFilter布隆过滤,提供一些Hash算法的布隆过滤
hutool-cache简单缓存实现
hutool-core核心,包括Bean操作、日期、各种Util等
hutool-cron定时任务模块,提供类Crontab表达式的定时任务
hutool-crypto加密解密模块,提供对称、非对称和摘要算法封装
hutool-dbJDBC封装后的数据操作,基于ActiveRecord思想
hutool-dfa基于DFA模型的多关键字查找
hutool-extra扩展模块,对第三方封装(模板引擎、邮件、Servlet、二维码、Emoji、FTP、分词等)
hutool-http基于HttpUrlConnection的Http客户端封装
hutool-log自动识别日志实现的日志门面
hutool-script脚本执行封装,例如Javascript
hutool-setting功能更强大的Setting配置文件和Properties封装
hutool-system系统参数调用封装(JVM信息等)
hutool-jsonJSON实现
hutool-captcha图片验证码实现
hutool-poi针对POI中Excel和Word的封装
hutool-socket基于Java的NIO和AIO的Socket封装
hutool-jwtJSON Web Token (JWT)封装实现

可根据需求对每个模块 单独引入,也可以通过引入hutool-all方式引入所有模块

HuTool工具使用

HuTool 工具 的API文档与官网把其能干的事情说的很详细了,下面主要是列举出工具类能干什么,方法有哪些,顺带可以提一下原理是啥,会用并且懂原理是最好的学习方式

1、导包

使用首先导包,在项目的 pom.xml 中加入以下内容:【Hutool 5.x 支持 JDK8+,JDK7 使用 Hutool 4.x版本】Maven中央库

<dependency>
    <groupId>cn.hutool</groupId>
    <artifactId>hutool-all</artifactId>
    <version>5.8.0</version>
</dependency>

若使用jar包,可去该 下载jar 网址下载hutool-all-X.X.X.jar即可

2、使用

这一小篇主要介绍第一类工具,即 基本类型 / 数组 / 数据类型转换 工具类,该类别主要有关于对数组操作、一些基本类型的操作、进制转换 等相关功能进行了封装( API 文档 ),涉及到的工具类如下:

  • ArrayUtil:数组工具类
  • BooleanUtil :Boolean 类型相关工具类
  • ByteUtil:Byte 类型相关工具类
  • CharUtil:字符工具类
  • StrUtil:字符串工具类
  • NumberUtil:数字工具类
  • EnumUtil:枚举工具类
  • CharsetUtil:字符集工具类
  • HexUtil:十六进制工具类
  • RadixUtil:进制转换工具类
  • PrimitiveArrayUtil:原始类型数组工具类

这里简单介绍一些:

2.1 ArrayUtil:数组工具类( API 文档

其里面有很多方法,但是有很多重载方法,根据不同类型的传参进行重载,为各个类型提供实现

具体传参与返回值可查看接口文档,这里仅总览出可完成的功能方法

方法功能支持类型原理
isEmpty是否为空8大基本类型
isNotEmpty是否为空8大基本类型
resize数组调整大小,补0/截断byteSystem.arraycopy
addAll数组合并8大基本类型System.arraycopy
range生成数字列表:
从0开始,给定终止位置
给定起始终止位置正序
给定起始终止位置倒序
int循环实现
split拆分byte数组为几个等份byteSystem.arraycopy
indexOf返回数组中指定元素所在位置8大基本类型循环实现
lastIndexOf返回数组中指定元素所在最后的位置8大基本类型循环实现
contains数组中是否包含元素8大基本类型使用indexOf,循环实现
wrap将原始类型数组包装为包装类型8大基本类型循环实现
unWrap包装类数组转为原始类型数组,null转为08大基本类型循环实现
sub获取包含起始位置,不包含终止位置的子数组8大基本类型System.arraycopy
remove移除数组中对应位置的元素8大基本类型System.arraycopy
removeEle移除数组中指定的元素,只会移除匹配到的第一个元素8大基本类型System.arraycopy
reverse对包含起始位置,不包含终止位置的数组进行反转,会变更原数组8大基本类型循环交换
min / max取数组最小值 / 最大值8大基本类型循环比较
shuffle打乱数组顺序,会变更原数组8大基本类型循环交换
swap交换数组中两个位置的值8大基本类型循环交换
isSorted
isSortedASC
检查数组是否升序8大基本类型循环比较
isSortedDESC检查数组是否降序8大基本类型循环比较
2.2 BooleanUtil :Boolean 类型相关工具类( API 文档

其里面主要针对 Boolean / boolean 类型 实现一些功能

具体传参与返回值可查看接口文档,这里仅总览出可完成的功能方法

方法功能支持类型原理
negate取相反值Boolean / boolean
isTrue是否为TrueBoolean
isFalse是否为FalseBoolean
toBoolean转换字符串为boolean值
字符串为以下任意均为True:
“true”, “yes”, “y”, “t”, “ok”, “1”, “on”, “是”, “对”, “真”, “對”, “√”
String
toInt
toInteger
toChar
toCharacter
toByte
toByteObj
toLong
toLongObj
toShort
toShortObj
toFloat
toFloatObj
toDouble
toDoubleObj
boolean值转为其他基本类型 / 基本类型的包装类型boolean
toStringTrueFalse
toStringOnOff
toStringYesNo
toString
boolean值转为String
字符串 true 或者 false
字符串 on 或者 off
字符串 yes 或者 no
指定正确/错误的字符串
boolean
isBoolean给定类是否为Boolean或者booleanClass
and
andOfWrap
对Boolean数组取与Boolean / boolean循环实现
or
orOfWrap
对Boolean数组取或Boolean / boolean循环实现
xor
xorOfWrap
对Boolean数组取异或Boolean / boolean循环实现
2.3 ByteUtil:Byte 类型相关工具类( API 文档

其里面主要针对 byte 类型 实现一些功能

具体传参与返回值可查看接口文档,这里仅总览出可完成的功能方法

方法功能支持类型原理
intToByte

byteToUnsignedInt
int转byte

byte转无符号int
int

byte
强转

二进制与
xxxxToBytes

bytesToxxxx
xxx 转 byte 数组

byte 数组转 xxx
xxx可为 int / short / long / float / double / number

byte
二进制与
2.4 CharUtil:char 类型相关工具类( API 文档

其里面主要针对 char 类型 实现一些功能

具体传参与返回值可查看接口文档,这里仅总览出可完成的功能方法

方法功能支持类型原理
isAscii字符是否为ASCII字符(0~127)char左移位数判断是否为0
isAsciiPrintable字符是否为可见ASCII字符(32~126)char
isAsciiControl字符是否为ASCII控制符(不可见字符)(0~31和127)char
isLetter
isLetterUpper
isLetterLower
字符是否为字母(A-Z a-z)
是否为大写字母(A-Z)
是否为小写字母(a-z)
char
isNumber字符是否为数字字符(0-9)char
isHexChar字符是否为16进制规范的字符(09、af、A~F)char
isLetterOrNumber字符是否是数字或者字母(AZ、az、0~9)char
isCharClass
isChar
给定类名是否为字符类(Char 、Character)
给定对象对应的类是否为字符类(Char 、Character)
Class
Object
isBlankChar字符是否是空白串char
getTypeint转字符类型int
isFileSeparator字符是否为Windows 或者Linux(Unix)文件分隔符char
toString字符转字符串char
equals比较两个字符是否相同char
digit16获取给定字符的16进制数值int(字符int)
toCloseChar将字母、数字转换为带圈的字符:‘1’ -》 ‘①’ ‘A’ -》 ‘Ⓐ’ ‘a’ -》 ‘ⓐ’char
toCloseByNumber将[1-20]数字转换为带圈的字符:1 -》 ‘①’ 12 -》 ‘⑫’ 20 -》 ‘⑳’char
2.5 StrUtil:String类型相关工具类( API 文档

其里面主要针对 String 类型 实现一些功能

具体传参与返回值可查看接口文档,这里仅总览出可完成的功能方法

方法功能支持类型原理
isBlankIfStr判断字符串是否为空白(空字符串、空格、全角空格、制表符、换行符)Object
isEmptyIfStr判断字符串是否为空串(null、空字符串)Object
trim字符串数组全部去除首尾空格String[]
utf8Str将对象转为字符串Object
str将对象转为字符串Object、byte[]、Byte[]、ByteBuffer
toString
toStringOrNull
对象的toString方法,null会返回“null”
调用对象的toString方法,null会返回 null
Object
builder
strBuilder
创建StringBuilder对象
getReader
getWriter
获得StringReader
获得StringWriter
fillBefore
fillAfter
fill
已有字符串填充为规定长度,超过这个长度则返回这个字符串(之前)
将已有字符串填充为规定长度,超过这个长度则返回这个字符串(之后)
将已有字符串填充为规定长度,超过这个长度则返回这个字符串(指定填充位置)
String
reverse字符串反转String
similar计算两个字符串的相似度 / 相似度百分比String
uuid生成随机UUID
format格式化文本CharSequence
2.6 NumberUtil:Number 类型相关工具类( API 文档

其里面主要针对 Number 类型 实现一些功能

具体传参与返回值可查看接口文档,这里仅总览出可完成的功能方法

方法功能支持类型原理
add
sub
mul
div
ceilDiv
加法运算、减法运算、乘法运算、除法运算、向上取整除法float、double、Number
round
roundStr
roundDown
roundHalfEven
保留固定位数小数
保留固定位数小数字符串
保留固定小数位数,舍去多余位数
四舍六入五成双计算法
double、String、BigDecimal
decimalFormat以格式化方式进行double格式化double
decimalFormatMoney格式化金额输出,每三位用逗号分隔double
formatPercent格式化百分比,小数采用四舍五入方式double
isInteger
isLong
isDouble
isPrimes
判断字符是否为数字
判断字符串是否是Long类型
判断字符串是否是浮点数
判断一个数是否是质数(素数)
CharSequence
String
String
int
generateRandomNumber
generateBySet
根据给定的最小数字和最大数字,以及随机数的个数,产生指定不重复数组
range
appendRange
从指定位置(默认为0)开始的整数列表,指定步进(默认为1)
将给定范围内的整数添加到已有集合中,指定步进(默认为1)
long、BigInteger
factorial计算范围阶乘long
sqrt
divisor
multiple
平方根算法
最大公约数
最小公倍数
long
int
int
compare比较两个值的大小char
long
double
short
int
short
getBinaryStr
binaryToInt
binaryToLong
获得数字对应的二进制字符串
二进制转int
二进制转long
isGreater
isGreaterOrEqual
isLess
isLessOrEqual
比较大小BigDecimal
min
max
equals
比较最小值
比较最大值
比较是否相等
T
int
long
short
byte
double
BigDecimal

总结

这一类型的工具类主要对一些数据类型的操作进行了封装,这里列举了一些Util,也介绍了一些Util,其他可以看具体的文档,涉及到的原理没有说明的,就是一些for循环、if 操作等一些简单操作

  • 0
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用Hutool工具包下的`TreeUtil`类来进行树的遍历和转换。具体实现代码如下: ```java import cn.hutool.core.util.ArrayUtil; import cn.hutool.core.util.TreeUtil; import cn.hutool.core.util.tree.Tree; import java.util.ArrayList; import java.util.List; public class Main { public static void main(String[] args) { // 创建树结构 List<Tree<Integer>> treeList = new ArrayList<>(); Tree<Integer> tree1 = new Tree<>(1, 0); Tree<Integer> tree2 = new Tree<>(2, 1); Tree<Integer> tree3 = new Tree<>(3, 1); Tree<Integer> tree4 = new Tree<>(4, 2); Tree<Integer> tree5 = new Tree<>(5, 3); Tree<Integer> tree6 = new Tree<>(6, 3); treeList.add(tree1); treeList.add(tree2); treeList.add(tree3); treeList.add(tree4); treeList.add(tree5); treeList.add(tree6); // 将树转换成一维数组 List<Tree<Integer>> nodeList = TreeUtil.build(treeList, 0); List<Integer> idList = new ArrayList<>(); for (Tree<Integer> node : nodeList) { idList.add(node.getId()); } Integer[] idArray = ArrayUtil.toArray(idList); System.out.println(ArrayUtil.toString(idArray)); } } ``` 在上述代码中,我们首先创建了一棵树结构,并将其转换成了一维数组。具体步骤如下: 1. 首先,我们使用`TreeUtil.build()`方法将树转换成单个节点列表,其中`0`表示根节点的父节点ID。 2. 然后,我们遍历单个节点列表,将每个节点的ID添加到一个列表中。 3. 最后,我们将列表转换成一个数组,即可得到树的一维数组表示。 运行上述代码,输出结果为: ``` [1, 2, 4, 3, 5, 6] ``` 这就是树的一维数组表示。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值