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.pswp.cn/news/162157.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/162157.shtml
英文地址,請注明出處:http://en.pswp.cn/news/162157.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

allegro畫封裝時使用坐標指令無效

使用坐標指令時顯示&#xff1a;“Pick is outside the extent of the drawing…pick again” 這是因為你放的引腳已經超出你這個繪制界面的定義尺寸&#xff0c;需要到Setup->Design pararmeters…里面去將圖幅改大一點&#xff0c;如下圖所示&#xff1a; 然后點擊Design…

消息中間件——RabbitMQ(三)理解RabbitMQ核心概念和AMQP協議!

前言 本章學習&#xff0c;我們可以了解到以下知識點&#xff1a; 互聯網大廠為什么選擇RabbitMQ&#xff1f;RabbiMQ的高性能之道是如何做到的&#xff1f;什么是AMQP高級協議&#xff1f;AMQP核心概念是什么&#xff1f;RabbitMQ整體架構模型是什么樣子的&#xff1f;Rabbi…

P8599 [藍橋杯 2013 省 B] 帶分數(dfs+全排列+斷點判斷)

思路&#xff1a;1.深度枚舉所有排列情況 2.設置為每個排列設置兩個斷點&#xff0c;分為三部分&#xff1a;a,b,c 3.轉換為乘法判斷條件&#xff0c;滿足加一 代碼如下&#xff1a;&#xff08;可用next_permutation全排列函數代替dfs&#xff09; #include<iostream>…

機器學習調參指南:提升模型性能的關鍵步驟

諸神緘默不語-個人CSDN博文目錄 文章目錄 1. 理解模型的參數和超參數2. 使用網格搜索進行超參數調優3. 隨機搜索4. 貝葉斯優化5. 使用交叉驗證避免過擬合6. 考慮正則化7. 調整學習率和其他優化器參數8. 實驗和記錄9. 模型的早停法10. 總結 在機器學習和深度學習的領域中&#x…

全面的日志監控管理工具

企業網絡由眾多日志源組成。集中監控這些日志源有助于防止數據威脅和網絡攻擊&#xff0c;綜合日志監控解決方案可以自動執行日志管理流程&#xff0c;通過關聯日志來識別惡意活動&#xff0c;并幫助滿足IT合規性要求。 不同類型的日志監控 EventLog Analyzer 綜合日志監控解…

智慧法院檔案數字化解決方案

智慧法院檔案數字化解決方案可以采用以下步驟&#xff1a; 1. 確定數字化目標&#xff1a;明確數字化的目標和范圍&#xff0c;比如將所有的案件相關文件、紙質檔案和材料進行數字化。 2. 確定數字化流程&#xff1a;制定數字化的流程和標準&#xff0c;比如采用哪些設備和軟件…

【Linux 文件傳輸系列 1.1 -- rsync 詳細介紹】

文章目錄 rsync 詳細介紹rsync 基本特性rsync 常用選項rsync 各種是使用示例 rsync 詳細介紹 rsync 是一個在 Linux 和 Unix 系統上廣泛使用的文件同步和傳輸工具。它被設計用于快速高效地同步文件和目錄之間的變化&#xff0c;不論是本地還是通過網絡。rsync 命令有許多選項&…

【C語言】qsort函數

目錄 簡介 頭文件 ?編輯 函數原型&#xff1a; 參數函數如何寫&#xff1a; 參數函數要求&#xff1a; qsort對整性數據的排序&#xff1a; qsort對字符型數據的排序&#xff1a; 對結構體類型的內部元素排序&#xff1a; 函數的底層是以快速排序實現的 但是本文不深入…

rxjs中combineLatest的用法

RxJS中的combineLatest操作符可以用于將多個Observable對象合并成一個新的Observable對象&#xff0c;新的Observable對象的值是由原始Observable對象的最新值組成的一個數組。當任何一個原始Observable對象發出新值時&#xff0c;新的Observable對象的值也會更新。 combineLa…

小黑子—Maven高級

Maven高級篇 二 小黑子的Maven高級篇學習1. 分模塊開發1.1 分模塊開發設計1.2 分模塊開發實現1.2.1 抽取domain層1.2.2 抽取dao層 2. 依賴管理2.1 依賴傳遞2.2 可選依賴2.3 排除依賴 3. 繼承與聚合3.1 聚合3.2 繼承3.3 總結 4. 屬性4.1 配置文件加載屬性4.2 版本管理 5. 多環境…

【開源】基于Vue.js的民宿預定管理系統

項目編號&#xff1a; S 058 &#xff0c;文末獲取源碼。 \color{red}{項目編號&#xff1a;S058&#xff0c;文末獲取源碼。} 項目編號&#xff1a;S058&#xff0c;文末獲取源碼。 目錄 一、摘要1.1 項目介紹1.2 項目錄屏 二、功能模塊2.1 用例設計2.2 功能設計2.2.1 租客角色…

夢開始的地方——Adobe Premiere Pro

今天&#xff0c;我們來說說一款老生常談的相信也是很多人都經常迫切需要的軟件。Adobe Premiere Pro&#xff0c;簡稱Pr&#xff0c;是由Adobe公司開發的一款視頻編輯軟件。 Premiere Pro是視頻編輯愛好者和專業人士必不可少的視頻編輯工具。它可以提升您的創作能力和創作自由…

httpd(Web服務器)

名詞解釋 1、URL&#xff1a;Uniform Resource Locator&#xff0c;統?資源定位符 2、?址格式&#xff1a;<協議>://<主機或主機名>[:port]/<?錄資源,路徑> 3、主機地址/主機名&#xff1a;主機地址是服務器在因特?所在的IP地址。主機名就需要域名解析…

裝飾器設計模式是什么?什么是 Decorator 裝飾器設計模式?Python 裝飾器設計模式示例代碼

什么是 Decorator 裝飾器設計模式&#xff1f; 裝飾器模式是一種結構型設計模式&#xff0c;它允許向現有對象動態地添加新功能&#xff0c;同時不改變其結構。這種模式實現了對對象的包裝&#xff0c;稱為裝飾器&#xff0c;并且可以在運行時動態地添加、修改或刪除對象的行為…

重磅!這本30w人都在看的Python數據分析暢銷書:更新了!

想學習python進行數據分析&#xff0c;這本《利用python進行數據分析》是繞不開的一本書。目前該書根據Python3.10已經更新到第三版。 Python 語言極具吸引力。自從 1991 年誕生以來&#xff0c;Python 如今已經成為最受歡迎的解釋型編程語言。 pandas 誕生于2008年。它是由韋…

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…

快慢指針判斷環形鏈表

我們在前面文章中寫過用快慢指針判斷鏈表是否帶環&#xff1a; leetcode&#xff1a;環形鏈表-CSDN博客 我們用的是slow指針一次走一步&#xff0c;fast指針一次走兩步&#xff0c;當slow入環后開始了追擊&#xff0c;每走一次距離縮短1&#xff0c;最終就會相遇 思考問題 …

【LeetCode】每日一題 2023_11_23 HTML 實體解析器(調庫/打工)

文章目錄 刷題前嘮嗑題目&#xff1a;HTML 實體解析器題目描述代碼與解題思路 結語 刷題前嘮嗑 題目&#xff1a;HTML 實體解析器 題目鏈接&#xff1a;1410. HTML 實體解析器 題目描述 代碼與解題思路 func entityParser(s string) (ans string) {return strings.NewRepla…

redo log 丟失或者損壞-ORA-01194: 文件 1 需要更多的恢復來保持一致性

#故障場景描述&#xff1a; 1、current redo 損壞或者丟失 2、ORA-01194: 文件 1 需要更多的恢復來保持一致性 C:\Users\ZMI>sqlplus / as sysdba SQL*Plus: Release 19.0.0.0.0 - Production on 星期三 11月 22 16:58:07 2023 Version 19.3.0.0.0 Copyright (c) 1982, …

NX二次開發UF_CAM_set_lower_limit_plane_tag 函數介紹

文章作者&#xff1a;里海 來源網站&#xff1a;https://blog.csdn.net/WangPaiFeiXingYuan UF_CAM_set_lower_limit_plane_tag Defined in: uf_cam_planes.h int UF_CAM_set_lower_limit_plane_tag(tag_t object_tag, tag_t target_tag ) overview 概述 Set the tag of a …