常用高效 Java 工具類總結

来源:https://www.cnblogs.com/midoujava/archive/2019/08/21/11391926.html
-Advertisement-
Play Games

一、前言 在Java中,工具類定義了一組公共方法,這篇文章將介紹Java中使用最頻繁及最通用的Java工具類。以下工具類、方法按使用流行度排名,參考數據來源於Github上隨機選取的5萬個開源項目源碼。 二、org.apache.commons.io.IOUtils closeQuietly:關閉一 ...


關註米兜Java.md

一、前言

在Java中,工具類定義了一組公共方法,這篇文章將介紹Java中使用最頻繁及最通用的Java工具類。以下工具類、方法按使用流行度排名,參考數據來源於Github上隨機選取的5萬個開源項目源碼。

二、org.apache.commons.io.IOUtils

closeQuietly:關閉一個IO流、socket、或者selector且不拋出異常,通常放在finally塊
toString:轉換IO流、 Uri、 byte[]為String
copy:IO流數據複製,從輸入流寫到輸出流中,最大支持2GB
toByteArray:從輸入流、URI獲取byte[]
write:把位元組. 字元等寫入輸出流
toInputStream:把字元轉換為輸入流
readLines:從輸入流中讀取多行數據,返回List<String>
copyLarge:同copy,支持2GB以上數據的複製
lineIterator:從輸入流返回一個迭代器,根據參數要求讀取的數據量,全部讀取,如果數據不夠,則失敗

三、org.apache.commons.io.FileUtils

deleteDirectory:刪除文件夾
readFileToString:以字元形式讀取文件內容
deleteQueitly:刪除文件或文件夾且不會拋出異常
copyFile:複製文件
writeStringToFile:把字元寫到目標文件,如果文件不存在,則創建
forceMkdir:強制創建文件夾,如果該文件夾父級目錄不存在,則創建父級
write:把字元寫到指定文件中
listFiles:列舉某個目錄下的文件(根據過濾器)
copyDirectory:複製文件夾
forceDelete:強制刪除文件

四、org.apache.commons.lang.StringUtils

isBlank:字元串是否為空 (trim後判斷)
isEmpty:字元串是否為空 (不trim並判斷)
equals:字元串是否相等
join:合併數組為單一字元串,可傳分隔符
split:分割字元串
EMPTY:返回空字元串
trimToNull:trim後為空字元串則轉換為null
replace:替換字元串

五、org.apache.http.util.EntityUtils

toString:把Entity轉換為字元串
consume:確保Entity中的內容全部被消費。可以看到源碼里又一次消費了Entity的內容,假如用戶沒有消費,那調用Entity時候將會把它消費掉
toByteArray:把Entity轉換為位元組流
consumeQuietly:和consume一樣,但不拋異常
getContentCharset:獲取內容的編碼

六、org.apache.commons.lang3.StringUtils

isBlank:字元串是否為空 (trim後判斷)
isEmpty:字元串是否為空 (不trim並判斷)
equals:字元串是否相等
join:合併數組為單一字元串,可傳分隔符
split:分割字元串
EMPTY:返回空字元串
replace:替換字元串
capitalize:首字元大寫

七、org.apache.commons.io.FilenameUtils

getExtension:返迴文件尾碼名
getBaseName:返迴文件名,不包含尾碼名
getName:返迴文件全名
concat:按命令行風格組合文件路徑(詳見方法註釋)
removeExtension:刪除尾碼名
normalize:使路徑正常化
wildcardMatch:匹配通配符
seperatorToUnix:路徑分隔符改成unix系統格式的,即/
getFullPath:獲取文件路徑,不包括文件名
isExtension:檢查文件尾碼名是不是傳入參數(List<String>)中的一個

八、org.springframework.util.StringUtils

hasText:檢查字元串中是否包含文本
hasLength:檢測字元串是否長度大於0
isEmpty:檢測字元串是否為空(若傳入為對象,則判斷對象是否為null)
commaDelimitedStringToArray:逗號分隔的String轉換為數組
collectionToDelimitedString:把集合轉為CSV格式字元串
replace 替換字元串
delimitedListToStringArray:相當於split
uncapitalize:首字母小寫
collectionToDelimitedCommaString:把集合轉為CSV格式字元串
tokenizeToStringArray:和split基本一樣,但能自動去掉空白的單詞

九、org.apache.commons.lang.ArrayUtils

contains:是否包含某字元串
addAll:添加整個數組
clone:克隆一個數組
isEmpty:是否空數組
add:向數組添加元素
subarray:截取數組
indexOf:查找某個元素的下標
isEquals:比較數組是否相等
toObject:基礎類型數據數組轉換為對應的Object數組

十、org.apache.commons.lang.StringEscapeUtils

參考十六:org.apache.commons.lang3.StringEscapeUtils

十一、org.apache.http.client.utils.URLEncodedUtils

format:格式化參數,返回一個HTTP POST或者HTTP PUT可用application/x-www-form-urlencoded字元串
parse:把String或者URI等轉換為List<NameValuePair>

十二、org.apache.commons.codec.digest.DigestUtils

md5Hex:MD5加密,返回32位字元串
sha1Hex:SHA-1加密
sha256Hex:SHA-256加密
sha512Hex:SHA-512加密
md5:MD5加密,返回16位字元串

十三、org.apache.commons.collections.CollectionUtils

isEmpty:是否為空
select:根據條件篩選集合元素
transform:根據指定方法處理集合元素,類似List的map()
filter:過濾元素,類似List的filter()
find:基本和select一樣
collect:和transform 差不多一樣,但是返回新數組
forAllDo:調用每個元素的指定方法
isEqualCollection:判斷兩個集合是否一致

十四、org.apache.commons.lang3.ArrayUtils

contains:是否包含某個字元串
addAll:添加整個數組
clone:克隆一個數組
isEmpty:是否空數組
add:向數組添加元素
subarray:截取數組
indexOf:查找某個元素的下標
isEquals:比較數組是否相等
toObject:基礎類型數據數組轉換為對應的Object數組

十五、org.apache.commons.beanutils.PropertyUtils

getProperty:獲取對象屬性值
setProperty:設置對象屬性值
getPropertyDiscriptor:獲取屬性描述器
isReadable:檢查屬性是否可訪問
copyProperties:複製屬性值,從一個對象到另一個對象
getPropertyDiscriptors:獲取所有屬性描述器
isWriteable:檢查屬性是否可寫
getPropertyType:獲取對象屬性類型

十六、org.apache.commons.lang3.StringEscapeUtils

unescapeHtml4:轉義html
escapeHtml4:反轉義html
escapeXml:轉義xml
unescapeXml:反轉義xml
escapeJava:轉義unicode編碼
escapeEcmaScript:轉義EcmaScript字元
unescapeJava:反轉義unicode編碼
escapeJson:轉義json字元
escapeXml10:轉義Xml10
這個現在已經廢棄了,建議使用commons-text包裡面的方法。

十七、org.apache.commons.beanutils.BeanUtils

copyPeoperties:複製屬性值,從一個對象到另一個對象
getProperty:獲取對象屬性值
setProperty:設置對象屬性值
populate:根據Map給屬性複製
copyPeoperty:複製單個值,從一個對象到另一個對象
cloneBean:克隆bean實例
現在你只要瞭解了以上16種最流行的工具類方法,你就不必要再自己寫工具類了,不必重覆造輪子。大部分工具類方法通過其名字就能明白其用途,如果不清楚的,可以看下別人是怎麼用的,或者去網上查詢其用法。

另外,工具類,根據阿裡開發手冊,包名如果要使用util不能帶s,工具類命名為 XxxUtils

作者:掘金(作者:alterem)
參考鏈接:https://juejin.im/post/5d4a25b351882505c105cc6e


本文在米兜公眾號鏈接:
https://mp.weixin.qq.com/s/OzMgSobnYoAjL4g-COs5Tw

歡迎關註米兜Java,一個註在共用、交流的Java學習平臺。

file


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • “類”是面向對象中一個重要的概念,有了類我們才能去討論什麼是封裝、繼承、多態。 什麼是類?先看下麵這張圖片。 現在你看到這張圖片後,根據圖片中表達的內容造一個句子吧。思考中........,OK,把自己想好的句子記在心裡,然後看下麵我的句子。o(* ̄︶ ̄*)o “一隻動物被兩個人往一個家電裡面裝” ...
  • 1.InteliJ IDEA設置快捷鍵 1.1. IDEA快捷鍵修改—代碼提示 IDEA中當現有的快捷鍵被系統中其他軟體(比如輸入法)占用時,我們可以自定義修改快捷鍵。比如,IDEA中的代碼自動提示快捷鍵和eclipse的不一樣,不是Alt + /,此時可以通過修改快捷鍵來設置。 修改方式: ①選擇 ...
  • 利用 Spring Boot Admin 進行項目監控管理 一、Spring Boot Admin 是什麼 Spring Boot Admin (SBA) 是一個社區開源項目,用於管理和監視 Spring Boot 應用程式。應用程式通過 的方式註冊到 Spring Boot 管理客戶端,或者通過 ...
  • 一、聯繫一個if語句 二、接受用戶輸入 三、簡寫括弧 四、源碼: d19_user_input_and_omit_brace.java 地址:https://github.com/ruigege66/Java/blob/master/d19_user_input_and_omit_brace.jav ...
  • 自1998年 JDK 1.0(Java 1.0) 發佈以來,Java 已經受到了學生、項目經理和程式員等一大批活躍用戶的歡迎。這一語言極富活力,不斷被用在大大小小的項目里。從 Java 1.1(1997年) 一直到 Java 7(2011年),Java 通過增加新功能,不斷得到良好的升級。Java ...
  • 基本類: AtomicInteger AtomicLong "AtomicBoolean" 數組類型: AtomicIntegerArray AtomicLongArray AtomicReferenceArray 介紹 由於在多線程條件下,如果對共用變數修改容易造成數據不一致的情況,所以對於共用變 ...
  • 最近一個朋友,在謀求架構師崗位的工作,經歷了魔都的一批互聯網公司的洗禮,讓他把面試經歷整理了一下,給大家一些經驗吧,希望各位後面去這些公司面試的時候,能有些心理準備。 還唄 地點:2號線金科路地鐵站(長泰廣場A座) 環境:環境還不錯,裝修偏簡約風,工位是互聯網公司那種排排坐。 投遞方式:拉勾網 面試 ...
  • 代理(proxy)分為2種: 靜態代理 動態代理 動態代理常用的有jdk動態代理、cglib代理。 靜態代理 1、新建User介面 2、新建實現類UserImpl 3、新建代理類UserProxy,也實現User介面,對目標對象(的方法)進行增強 4、使用代理。新建測試類Test 靜態代理的特點 代 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...