Hutool

一、简介

Hutool是一个小而全的Java工具类库,通过静态方法封装,降低相关API的学习成本,提高工作效率,使Java拥有函数式语言般的优雅
官方文档: https://www.hutool.cn/docs/#/

二、包含组件

一个Java基础工具类,对文件、流、加密解密、转码、正则、线程、XML等JDK方法进行封装,组成各种Util工具类,同时提供以下组件:
在这里插入图片描述
可以通过引入hutool-all方式引入所有模块,但还是不建议引入所有模块,因为绝大部分功能项目可能都用不上,建议只引入你需要的模块。

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

hutool工具使用

1.NumberUtil 数字工具类

parseInt()//string转int
parseLong()//string转Long
add()//精确加法
sub()//精确减法
div()//精确除法
mul()//精确乘法
isGreater()//比较大小,返回布尔值
equals()//比较是否相等
round()//保留几位小数
isNumber()//是否为数字
isInteger()//是否是整数
isPrimes()//是否为质数

2.ArrayUtil 数组工具类

isEmpty()//数组是否为空
insert()//将新元素插入到到已有数组中的某个位置
addAll()//将多个数组合并在一起
copy()//数组复制
split()//拆分数组为几个等份
nullToEmpty()//数组元素中的null转换为""
contains()//数组中是否包含元素
isArray()//对象是否为数组对象
sub()//获取子数组
join()//指定分隔符将数组转换为字符串
reverse()//反转数组
min()//取最小值
max()//取最大值
swap()//交换数组中两个位置的值
distinct()//去重数组中的元素,去重后生成新的数组,原数组不变

3.ClassUtil 类工具类

getClassName()//获取类名对象
loadClass()//加载类
invoke()//执行方法

4.IdUtil ID生成器工具类

fastSimpleUUID()//简化的UUID,去掉了横线,使用性能更好的ThreadLocalRandom生成UUID
createSnowflake()//返回Snowflake算法生成器,使用snowflake.nextId()生成下一个id

5.PhoneUtil 手机号工具类

isMobile()//验证是否为手机号码(中国)
isTel()//验证是否为座机号码(中国)
hideBefore()//隐藏手机号前7位  替换字符为"*"
hideBetween()//隐藏手机号中间4位  替换字符为"*"
hideAfter()//隐藏手机号最后4位  替换字符为"*"
subBefore()//获取手机号前3位

6.RandomUtil 随机工具类

randomInt()//获得指定范围内的随机数
randomEle()//随机获得列表中的元素
randomEleSet()//随机获得列表中的一定量的不重复元素,返回Set
randomString()//获得一个随机的字符串
randomNumbers()//获得一个只包含数字的字符串
randomDate()//以给定日期为基准,随机产生一个日期

7.ReflectUtil 反射工具类

getConstructor()//查找类中的指定参数的构造方法,如果找到构造方法,会自动设置可访问为true
getFieldName()//获取字段名
getField()//查找指定类中的指定name的字段
getFieldValue()//获取字段值
setFieldValue()//设置字段值
getPublicMethod()//查找指定Public方法
getMethod()//查找指定方法
newInstance()//实例化对象
invoke()//执行方法

8.ReUtil 正则相关工具类

getGroup0()//获得匹配的字符串,获得正则中分组0的内容
get()//获得匹配的字符串
getAllGroups()//获得匹配的字符串匹配到的所有分组
delFirst()//删除匹配的第一个内容
delAll()//删除匹配的全部内容
delPre()//删除正则匹配到的内容之前的字符
findAll()//取得内容中匹配的所有结果
count()//计算指定字符串中匹配的个数
contains()//指定内容中是否有表达式匹配的内容
replaceAll()//正则替换指定值

9.StrUtil 字符串工具类

isBlank()//字符串是否为空白
isEmpty()//字符串是否为空
startWith()//字符串是否以给定字符开始
endWith()//字符串是否以给定字符结尾
contains()//指定字符是否在字符串中出现过
genSetter()//生成set方法名
genGetter()//生成get方法名
removeAll()//移除字符串中所有给定字符串
removeAny()//移除字符串中所有给定字符串,当某个字符串出现多次,则全部移除
upperFirst()//大写首字母
lowerFirst()//小写首字母
strip()//去除两边的指定字符串
cleanBlank()//清理空白字符
maxLength()//限制字符串长度,如果超过指定长度,截取指定长度并在末尾加"..."
subBetween()//截取指定字符串中间部分,不包括标识字符串
repeat()//重复某个字符
format()//格式化文本, {} 表示占位符
utf8Str()//将对象转为字符串
join()//指定分隔符将多个对象转换为字符串
toUnderlineCase()//将驼峰式命名的字符串转换为下划线方式
toSymbolCase()//将驼峰式命名的字符串转换为使用符号连接方式
toCamelCase()//将下划线方式命名的字符串转换为驼峰式
padPre()//前面补充字符串以满足最小长度
padAfter()//后面补充字符串以满足最小长度
center()//居中字符串,两边补充指定字符串
builder()//创建StringBuilder对象
getReader()//获得StringReader
getWriter()//获得StringWriter
count()//统计指定内容中包含指定字符串的数量
cut()//将字符串切分为N等份
indexOf()//指定范围内查找指定字符
reverse()//反转字符串
replace()//替换字符串中的指定字符串
hide()//替换指定字符串的指定区间内字符为"*"
similar()//计算两个字符串的相似度
concat()//连接多个字符串为一个

10.URLUtil URL统一资源定位符相关工具类

url()//通过一个字符串形式的URL地址创建URL对象
getURL()//获得URL
getHost()//获取URL中域名部分
encode()//编码URL,默认使用UTF-8编码
getPath()//获得path部分
normalize()//标准化URL字符串

11.XmlUtil XML工具类

readXML()//读取解析XML文件
parseXml()//将String类型的XML转换为XML文档
toStr()//将XML文档转换为String
format()//格式化XML输出
toFile()//将XML文档写入到文件
write()//将XML文档写出
createXml()//创建XML文档
getRootElement()//获得XML文档根节点
getElements()//根据节点名获得子节点列表
getElement()//根据节点名获得第一个子节点

12.BeanUtil Bean工具类

getFieldValue()//获得字段值,通过反射直接获得字段值,并不调用getXXX方法
setFieldValue()//设置字段值,,通过反射设置字段值,并不调用setXXX方法
mapToBean()//Map转换为Bean对象
fillBeanWithMap()//使用Map填充Bean对象
toBean()//对象或Map转Bean
beanToMap()//对象转Map
copyProperties()//按照Bean对象属性创建对应的Class对象,并忽略某些属性

13.CollUtil 集合相关工具类

union()//多个集合的并集
unionDistinct()//多个集合的非重复并集
intersection()//多个集合的交集
disjunction()//两个集合的差集
subtract()//计算集合的单差集,即只返回【集合1】中有,但是【集合2】中没有的元素
contains()//判断指定集合是否包含指定值
join()//指定分隔符将集合转换为字符串
distinct()//去重集合
sub()//截取集合的部分
split()//对集合按照指定长度分段
filter()//过滤,此方法产生一个新集合
indexOfAll()//获取匹配规则定义中匹配到元素的所有位置
addAll()//将指定对象全部加入到集合中
addAllIfNotContains()//将另一个列表中的元素加入到列表中,如果列表中已经存在此元素则忽略之
sort()//排序集合
forEach()//循环遍历
reverse()//反序给定List,会在原List基础上直接修改
reverseNew()//反序给定List,会创建一个新的List,原List数据不变
max()//取最大值
min()//取最小值

14.CalendarUtil 针对Calendar对象封装工具类

calendar()//转换为Calendar对象
truncate()//修改日期为某个时间字段起始时间
round()//修改日期为某个时间字段四舍五入时间
ceiling()//修改日期为某个时间字段结束时间
yearAndQuarter()//获得指定日期区间内的年份和季度
compare()//安全的Calendar比较
age()//计算指定生日在某年的年龄
formatChineseDate()//将指定Calendar时间格式化为纯中文形式
parseByPatterns()//通过给定的日期格式解析日期时间字符串

15.DateUtil 时间工具类

date()//当前时间
current()//当前时间的时间戳
now()//当前时间,格式 yyyy-MM-dd HH:mm:ss
today()//当前日期,格式 yyyy-MM-dd
year()//获得年的部分
month()//获得月份,从0开始计数
weekOfYear()//获得指定日期是所在年份的第几周
weekOfMonth()//获得指定日期是所在月份的第几周
dayOfMonth()//获得指定日期是这个日期所在月份的第几天
dayOfYear()//获得指定日期是这个日期所在年的第几天
dayOfWeek()//获得指定日期是星期几,1表示周日,2表示周一
hour()//获得指定日期的小时数部分
minute()//获得指定日期的分钟数部分
second()//获得指定日期的秒数部分
millsecond()//获得指定日期的毫秒数部分
format()//根据特定格式格式化日期
formatChineseDate()//格式化为中文日期格式
parse()//构建DateTime对象
yesterday()//昨天
tomorrow()//明天
lastWeek()//上周
nextWeek()//下周
lastMonth()//上个月
offsetDay()//偏移天
offsetHour()//偏移小时
offsetMinute//偏移分钟
offset()//获取指定日期偏移指定时间后的时间,生成的偏移日期不影响原日期
between()//判断两个日期相差的时长,只保留绝对值
betweenDay()//判断两个日期相差的天数
betweenMonth()//计算两个日期相差月数
betweenYear()//计算两个日期相差年数
formatBetween()//格式化日期间隔输出
timer()//计时器
isExpired()//判定在指定检查时间是否过期
timeToSecond()//HH:mm:ss 时间格式字符串转为秒数
secondToTime()//秒数转为时间格式(HH:mm:ss)
range()//创建日期范围生成器

16.ImgUtil 图片处理工具类

scale()//缩放图像(按比例缩放)
cut()//图像切割(按指定起点坐标和宽高切割)
slice()//图像切片(指定切片的宽度和高度)
convert()//图像类型转换
gray()//彩色转为黑白
binary()//彩色转为黑白二值化图片
pressText()//给图片添加文字水印
pressImage()//给图片添加图片水印
rotate()//旋转图片为指定角度
flip()//水平翻转图像
compress()//压缩图像,输出图像只支持jpg文件
copyImage()//将已有Image复制新的一份出来
createImage()//根据文字创建图片
createFont()//根据文件创建字体
writeJpg()//写出图像为JPG格式
write()//按照目标格式写出图像
getReader()//获得ImageReader
read()//从文件中读取图片
randomColor()//生成随机颜色
backgroundRemoval()//背景移除

17.FileUtil 文件工具类

ls()//列出目录文件
loopFiles()//递归遍历目录以及子目录中的所有文件
listFileNames()//获得指定目录下所有文件
file()//创建File对象
exist()//判断文件是否存在
lastModifiedTime()//指定文件最后修改时间
size()//计算目录或文件的总大小
touch()//创建文件及其父目录
del()//删除文件或者文件夹
clean()//清空文件夹
mkdir()//创建文件夹
copyFile()//拷贝文件
copy()//复制文件或目录
rename()//修改文件或目录的文件名
getAbsolutePath()//获取绝对路径
equals()//检查两个文件是否是同一个文件
contentEquals()//比较两个文件内容是否相同
pathEquals()//文件路径是否相同
getName()//返回文件名
getSuffix()//获取文件后缀名,扩展名不带“.”
getPrefix()//返回主文件名
pathEndsWith()//判断文件路径是否有指定后缀,忽略大小写
getType()//根据文件流的头部信息获得文件类型
readString()//读取文件内容
readLines()//从文件中读取每一行数据
readLine()//单行处理文件内容
load()//按照给定的readerHandler读取文件中的数据
writeUtf8String()//将String写入文件,覆盖模式,字符集为UTF-8
writeString()//将String写入文件,覆盖模式
appendUtf8String()//将String写入文件,UTF-8编码追加模式
appendString()//将String写入文件,追加模式
writeLines()//将list写入文件,覆盖模式
appendLines()//将list写入文件,追加模式
writeMap()//将Map写入文件
getParent()//获取指定层级的父路径
tail()//文件内容跟随器

18.IoUtil IO工具类

copy()//将Reader中的内容复制到Writer中
read()//从流中读取内容
toStream()//转为流
write()//将byte[]写到流中
flush()//从缓存中刷出数据
close()//关闭

19.TreeUtil 树工具类

build()//树构建

20.ThreadUtil 线程池工具

newExecutor()//新建一个线程池
execute()//直接在公共线程池中执行线程
execAsync()//执行异步方法
newThread()//创建新线程
sleep()//挂起当前线程
createThreadLocal()//创建本地线程对象
interrupt()//结束线程

21.JSONUtil JSON工具类

createObj()//创建JSONObject
createArray()//创建 JSONArray
parseObj()//JSON字符串转JSONObject对象
parseArray()//JSON字符串转JSONArray
parse()//转换对象为JSON
toJsonStr()//转为JSON字符串
toBean()//JSON字符串转为实体类对象
toList()//将JSONArray转换为Bean的List
formatJsonStr()//格式化JSON字符串

22.ExcelUtil Excel工具类

readBySax()//通过Sax方式读取Excel
getReader()//获取Excel读取器
getWriter()//获得ExcelWriter

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/209330.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

梁培强:塑造下一代投资高手

在当前全球经济动荡和金融市场快速变化的背景下&#xff0c;梁培强的投资教育计划不仅仅是一套课程&#xff0c;它是对传统投资理念的深度挑战和革新。梁培强&#xff0c;拥有超过二十年金融行业经验的资深分析师&#xff0c;正在引领一场投资者教育的变革&#xff0c;旨在培养…

Java核心知识点整理大全9-笔记

目录 null文章浏览阅读9w次&#xff0c;点赞7次&#xff0c;收藏7次。Java核心知识点整理大全https://blog.csdn.net/lzy302810/article/details/132202699?spm1001.2014.3001.5501 Java核心知识点整理大全2-笔记_希斯奎的博客-CSDN博客 Java核心知识点整理大全3-笔记_希斯…

3.volatile基本原理及缺陷

目录 概述案例代码如下执行结果 原理实现内存可见性的过程硬件上的内存屏障底层分析java中的四种内存屏障 缺陷代码执行结果 结束 概述 想要多线程程序正确的执行&#xff0c;必须要保证原子性、可见性及有序性。只要有一个没有被保证&#xff0c;就有可能导致程序运行不正确。…

图像分类原理

一、什么是图像分类(Image Classification) 图像分类任务是计算机视觉中的核心任务&#xff0c;其目标是根据图像信息中所反映的不同特征&#xff0c;把不同类别的图像区分开来。 二、图像分类任务的特点 对于人来说&#xff0c;完成上述的图像分类任务简直轻而易举&#xf…

TypeScript快速入门

基础类型 类型定义例子布尔值Boolean赋值为true或者falselet isDone:boolean false数字number支持十进制、八进制、十六进制let decLiteral: number 2023; let binaryLiteral: number 0b11111100111;let octalLiteral: number 0o3747;let hexLiteral: number 0x7e7;字符串…

办公技巧:Word中插入图片、形状、文本框排版技巧

目录 一、插入图片排版技巧 二、添加形状排版技巧 三、插入“文本框”排版技巧 我们平常在制作word时候经常会遇到插入选项卡下的图片、形状和文本框这三种情况下&#xff0c;那么如何使得Word文档当中添加这三个元素的同时&#xff0c;又能保证样式美观呢&#xff0c;今天小…

NX二次开发UF_CAM_set_clear_plane_data 函数介绍

文章作者&#xff1a;里海 来源网站&#xff1a;https://blog.csdn.net/WangPaiFeiXingYuan UF_CAM_set_clear_plane_data Defined in: uf_cam_planes.h int UF_CAM_set_clear_plane_data(tag_t object_tag, double origin [ 3 ] , double normal [ 3 ] ) overview 概述 De…

【LeetCode】每日一题 2023_11_23 HTML 实体解析器(调库/打工)

文章目录 刷题前唠嗑题目&#xff1a;HTML 实体解析器题目描述代码与解题思路 结语 刷题前唠嗑 题目&#xff1a;HTML 实体解析器 题目链接&#xff1a;1410. HTML 实体解析器 题目描述 代码与解题思路 func entityParser(s string) (ans string) {return strings.NewRepla…

TransFusionNet:JetsonTX2下肝肿瘤和血管分割的语义和空间特征融合框架

TransFusionNet: Semantic and Spatial Features Fusion Framework for Liver Tumor and Vessel Segmentation Under JetsonTX2 TransFusionNet&#xff1a;JetsonTX2下肝肿瘤和血管分割的语义和空间特征融合框架背景贡献实验方法Transformer-Based Semantic Feature Extractio…

介绍几种Go语言开发的IDE

文章目录 1.前言2.几种ide2.1 Goland2.2 VsCode示例 2.3 LiteIDE2.4 Eclipse插件GoClipse2.5 Atom2.6 Vim2.7 Sublime Text 3.总结写在最后 1.前言 Go语言作为一种新兴的编程语言&#xff0c;近年来受到了越来越多的关注。 它以其简洁、高效和并发性能而闻名&#xff0c;被广…

微服务 Spring Cloud 9,RPC框架,客户端和服务端如何建立网络连接?

目录 一、客户端和服务端如何建立网络连接&#xff1f;1、HTTP通信2、Socket通信 二、服务端如何处理请求&#xff1f;1、通常来说&#xff0c;有三种处理方式&#xff1a;2、不同的处理方式对应着不同的业务场景&#xff1a; 三、HTTP协议传输流程四、数据该如何序列化和反序列…

【深度学习】参数优化和训练技巧

寻找合适的学习率(learning rate) 学习率是一个非常非常重要的超参数&#xff0c;这个参数呢&#xff0c;面对不同规模、不同batch-size、不同优化方式、不同数据集&#xff0c;其最合适的值都是不确定的&#xff0c;我们无法光凭经验来准确地确定lr的值&#xff0c;我们唯一可…