成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Java 常用工具類匯總:15 個輪子幫你節(jié)省 80% 開發(fā)時間

開發(fā)
今天這篇文章,我整理了 Java 開發(fā)中最常用的 15 個工具類,每個工具類都附帶真實業(yè)務場景的代碼示例,看完讓你開發(fā)效率直接翻倍,從此告別加班!

還在重復寫日期格式化、字符串處理的代碼?別人用工具類一行搞定的事,你卻要堆十幾行冗余代碼?別再做 “重復造輪子” 的傻事了!今天這篇文章,我整理了 Java 開發(fā)中最常用的 15 個工具類,每個工具類都附帶真實業(yè)務場景的代碼示例,看完讓你開發(fā)效率直接翻倍,從此告別加班!

一、字符串工具類:告別 String 操作的繁瑣

1. Apache Commons Lang3 - StringUtils

字符串處理的 “瑞士軍刀”,解決了原生 String 類的諸多痛點,比如判斷空字符串、拼接、截取等。

// 1. 判斷字符串是否為空(避免 null 導致的空指針)

StringUtils.isEmpty(null); // true

StringUtils.isEmpty(""); // true

StringUtils.isEmpty(" "); // false(注意:空格不算空)

StringUtils.isBlank(" "); // true(isBlank 會忽略空格)

// 2. 安全拼接字符串(避免 null 被當成"null"處理)

String name = null;


String result = StringUtils.join("Hello, ", name, "!"); // 結果:"Hello, !"

// 原生 String 拼接會得到"Hello, null!"

// 3. 截取字符串(超出長度時不會報錯)

StringUtils.substring("abcdef", 2, 4); // "cd"

StringUtils.substring("abc", 5); // ""(超出范圍返回空串)

使用場景:表單驗證、接口參數(shù)處理、日志拼接等,幾乎所有涉及字符串的地方都能用。

2. Google Guava - Strings

Guava 庫中的字符串工具類,補充了很多實用功能,比如重復字符串、填充字符串等。

// 1. 重復生成字符串

Strings.repeat("ab", 3); // "ababab"

// 2. 左右填充(常用于格式化輸出)

Strings.padStart("123", 5, '0'); // "00123"(左填充到5位,不足補0)

Strings.padEnd("123", 5, '0'); // "12300"(右填充)

// 3. 檢查字符串是否為 null 或空

Strings.isNullOrEmpty(""); // true

二、日期時間工具類:輕松搞定時間處理

3. Java 8 原生 - LocalDateTime + DateTimeFormatter

JDK 8 新增的日期時間類,線程安全且易用,徹底替代 SimpleDateFormat。

// 1. 格式化日期(線程安全)

LocalDateTime now = LocalDateTime.now();


DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");


String formatted = now.format(formatter); // "2025-07-07 15:30:20"

// 2. 解析字符串為日期

LocalDateTime parsed = LocalDateTime.parse("2025-07-07 15:30:20", formatter);


// 3. 日期計算(加/減天數(shù)、月份)

LocalDateTime tomorrow = now.plusDays(1);


LocalDateTime lastMonth = now.minusMonths(1);

為什么不用 SimpleDateFormat?

SimpleDateFormat 是線程不安全的,多線程環(huán)境下會出各種詭異的 bug,而 DateTimeFormatter 是線程安全的,可放心使用。

4. Apache Commons Lang3 - DateUtils

兼容舊版本 JDK 的日期工具類,處理 Date 類型很方便。

// 1. 日期加減

Date date = new Date();


Date nextWeek = DateUtils.addWeeks(date, 1); // 加一周

Date lastYear = DateUtils.addYears(date, -1); // 減一年

// 2. 判斷日期是否在范圍內(nèi)

Date start = DateUtils.parseDate("2025-01-01", "yyyy-MM-dd");


Date end = DateUtils.parseDate("2025-12-31", "yyyy-MM-dd");


boolean isBetween = DateUtils.isSameDay(date, start) ||


                  (date.after(start) && date.before(end));

三、集合工具類:簡化集合操作

5. Apache Commons Collections4 - CollectionUtils

集合操作的利器,解決了空集合判斷、集合合并、過濾等問題。

// 1. 安全操作集合(避免對 null 集合調(diào)用方法)

List<String> list = null;


CollectionUtils.isEmpty(list); // true

CollectionUtils.isNotEmpty(list); // false

// 2. 合并兩個集合(自動過濾 null 集合)

List<String> list1 = Arrays.asList("a", "b");


List<String> list2 = null;


CollectionUtils.union(list1, list2); // 結果:["a", "b"]

// 3. 過濾集合元素

CollectionUtils.filter(list1, s -> s.startsWith("a")); // 過濾后:["a"]

避坑點:原生集合調(diào)用 addAll(null) 會拋空指針,而 CollectionUtils.addAll() 會安全處理。

6. Google Guava - Lists / Sets / Maps

Guava 提供的集合工具類,創(chuàng)建集合更簡潔,還能做集合轉換、分割等。

// 1. 簡化集合創(chuàng)建

List<String> list = Lists.newArrayList("a", "b", "c");


Set<Integer> set = Sets.newHashSet(1, 2, 3);


Map<String, Integer> map = Maps.newHashMap();


// 2. 分割集合(分頁場景常用)

List<Integer> numbers = Lists.newArrayList(1, 2, 3, 4, 5);


List<List<Integer>> partitioned = Lists.partition(numbers, 2); // 分割為 [[1,2], [3,4], [5]]

// 3. 集合交集/并集/差集

Set<Integer> setA = Sets.newHashSet(1, 2, 3);


Set<Integer> setB = Sets.newHashSet(3, 4, 5);


Sets.intersection(setA, setB); // 交集:[3]

Sets.union(setA, setB); // 并集:[1,2,3,4,5]

Sets.difference(setA, setB); // 差集:[1,2]

四、IO 工具類:文件操作不再繁瑣

7. Apache Commons IO - FileUtils

文件操作的 “天花板”,一行代碼搞定文件讀寫、復制、刪除等。

// 1. 讀取文件內(nèi)容(自動處理編碼和流關閉)

List<String> lines = FileUtils.readLines(new File("test.txt"), StandardCharsets.UTF_8);


// 2. 寫入文件(自動創(chuàng)建父目錄)

FileUtils.writeStringToFile(new File("output.txt"), "Hello", StandardCharsets.UTF_8);


// 3. 復制文件/目錄(支持跨磁盤)

FileUtils.copyFile(new File("a.txt"), new File("b.txt"));


FileUtils.copyDirectory(new File("dir1"), new File("dir2"));


// 4. 遞歸刪除目錄(比原生 File.delete() 更強大)

FileUtils.deleteDirectory(new File("temp"));

對比原生 IO:用原生代碼實現(xiàn)文件復制需要 20 行以上,而 FileUtils 一行搞定,還能自動處理異常和資源關閉。

8. Google Guava - Files

Guava 的文件工具類,補充了一些實用功能,比如觸摸文件、移動文件等。

// 1. 創(chuàng)建或更新文件最后修改時間(類似 Linux 的 touch 命令)

Files.touch(new File("empty.txt"));


// 2. 移動文件(支持覆蓋)

Files.move(new File("a.txt"), new File("b.txt"), StandardCopyOption.REPLACE_EXISTING);


// 3. 讀取文件為字符串

String content = Files.toString(new File("test.txt"), StandardCharsets.UTF_8);

五、加密工具類:安全處理敏感數(shù)據(jù)

9. Apache Commons Codec - DigestUtils

加密解密工具類,支持 MD5、SHA、Base64 等常用算法。

// 1. MD5 加密(返回 32 位小寫哈希)

String md5 = DigestUtils.md5Hex("123456"); // "e10adc3949ba59abbe56e057f20f883e"

// 2. SHA-256 加密

String sha256 = DigestUtils.sha256Hex("123456");


// 3. Base64 編碼/解碼

String base64Encoded = Base64.encodeBase64String("hello".getBytes());


byte[] decoded = Base64.decodeBase64(base64Encoded); // 解碼為"hello"

使用場景:密碼加密存儲、接口簽名驗證、數(shù)據(jù)傳輸加密等。

10. Hutool - SecureUtil

國產(chǎn)工具類庫 Hutool 中的加密工具,封裝更簡潔,支持更多算法。

// 1. 對稱加密(AES)

String content = "敏感數(shù)據(jù)";


String key = "1234567890abcdef"; // 16位密鑰

String encrypt = SecureUtil.aes(key.getBytes()).encryptHex(content);


String decrypt = SecureUtil.aes(key.getBytes()).decryptStr(encrypt);


// 2. 生成隨機鹽值(用于密碼加密)

String salt = SecureUtil.generateSalt(8); // 8位隨機鹽

六、其他高頻工具類

11. Java 原生 - Objects

JDK 7 新增的工具類,處理對象的 equals、hashCode、非空判斷等。

// 1. 安全比較兩個對象(避免 null 導致的空指針)

String a = null;


String b = "abc";


Objects.equals(a, b); // false(原生 a.equals(b) 會拋空指針)

// 2. 生成哈希碼(多個字段組合)

int hashCode = Objects.hash("name", 25, true);


// 3. 檢查對象是否為 null(為空則拋異常)

Objects.requireNonNull(user, "用戶對象不能為空");

12. Apache Commons Lang3 - ArrayUtils

數(shù)組操作工具類,解決數(shù)組拼接、擴容、查找等問題。

// 1. 數(shù)組判空

String[] arr = null;


ArrayUtils.isEmpty(arr); // true

ArrayUtils.isNotEmpty(arr); // false

// 2. 數(shù)組拼接

int[] arr1 = {1, 2};


int[] arr2 = {3, 4};


int[] merged = ArrayUtils.addAll(arr1, arr2); // [1,2,3,4]

// 3. 數(shù)組擴容

int[] expanded = ArrayUtils.resize(arr1, 5); // [1,2,0,0,0]

13. Hutool - DateUtil

Hutool 中的日期工具類,兼容新舊日期類,功能全面。

// 1. 格式化日期(支持各種格式)

String dateStr = DateUtil.format(new Date(), "yyyy年MM月dd日 HH:mm:ss");


// 2. 計算兩個日期差

Date date1 = DateUtil.parse("2025-01-01");


Date date2 = DateUtil.parse("2025-01-10");


long days = DateUtil.between(date1, date2, DateUnit.DAY); // 9天

// 3. 獲取指定日期(比如上個月第一天)

Date lastMonthFirstDay = DateUtil.beginOfMonth(DateUtil.lastMonth());

14. Google Guava - Preconditions

參數(shù)校驗工具類,讓方法入?yún)⑿r灨啙崱?/p>

public void createUser(String name, int age) {


   // 校驗參數(shù),不滿足則拋異常

   Preconditions.checkNotNull(name, "用戶名不能為空");


   Preconditions.checkArgument(age > 0 && age < 150, "年齡必須在1-150之間");


   Preconditions.checkState(age >= 18, "未滿18歲不能創(chuàng)建賬號");


}

優(yōu)勢:比手動寫 if-else 校驗代碼減少 50% 行數(shù),異常信息更清晰。

15. Apache Commons Validator - UrlValidator / EmailValidator

數(shù)據(jù)校驗工具類,支持 URL、郵箱、手機號等格式驗證。

// 1. 驗證郵箱格式

boolean isEmail = EmailValidator.getInstance().isValid("test@example.com");


// 2. 驗證 URL 格式

UrlValidator urlValidator = new UrlValidator();


boolean isUrl = urlValidator.isValid("https://www.example.com");

為什么用工具類能節(jié)省 80% 時間?

這些工具類就像 “預制菜”,幫你做好了最繁瑣的基礎工作,讓你專注于核心業(yè)務邏輯:

  • 減少重復代碼:一個工具類方法頂 10 行原生代碼
  • 避免低級錯誤:處理了 null、邊界值等特殊情況,減少 bug
  • 提高可讀性:StringUtils.isBlank() 比 s == null || s.trim().isEmpty() 更直觀

推薦引入的依賴(Maven):

<!-- Apache Commons Lang3 -->


<dependency>

   <groupId>org.apache.commons</groupId>

   <artifactId>commons-lang3</artifactId>

   <version>3.12.0</version>

</dependency>

<!-- Apache Commons Collections4 -->


<dependency>

   <groupId>org.apache.commons</groupId>

   <artifactId>commons-collections4</artifactId>

   <version>4.4</version>

</dependency>

<!-- Apache Commons IO -->


<dependency>

   <groupId>commons-io</groupId>

   <artifactId>commons-io</artifactId>

   <version>2.16.1</version>

</dependency>

<!-- Google Guava -->


<dependency>

   <groupId>com.google.guava</groupId>

   <artifactId>guava</artifactId>

   <version>33.2.0-jre</version>

</dependency>

<!-- Hutool(國產(chǎn)神器) -->


<dependency>

   <groupId>cn.hutool</groupId>

   <artifactId>hutool-all</artifactId>

   <version>5.8.26</version>

</dependency>

覺得有用的話,轉發(fā)給團隊里還在重復造輪子的同事,一起提升開發(fā)效率,早日下班!

責任編輯:趙寧寧 來源: 編程江湖
相關推薦

2022-12-05 14:39:33

Javascript工具

2019-07-08 15:10:17

JS工具函數(shù)

2009-01-04 11:55:09

Java數(shù)組Java常用工具Java類

2014-10-21 15:11:29

Android工具類源碼

2018-01-30 18:49:16

前端JavascriptCSS

2010-06-12 13:59:12

2011-02-21 12:44:05

Postfix

2010-06-04 14:00:32

Hadoop開發(fā)

2014-04-09 10:51:56

iOS開發(fā)常用工具

2021-02-05 23:23:55

Web開發(fā)工具

2019-02-13 14:58:43

cssjavascript前端

2011-04-08 17:24:05

c++工具編程

2017-09-26 11:29:29

安卓

2020-02-12 07:40:09

Java常用工具

2025-06-10 01:11:00

2010-06-04 17:56:22

Linux 常用工具

2010-06-13 15:35:01

2019-03-25 19:13:37

MySQL常用工具數(shù)據(jù)庫

2023-10-16 08:27:17

java工具類

2012-04-16 13:37:57

cocos2d
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲精选在线观看 | 可以看的毛片 | 91插插插插插 | 神马福利视频 | 精品一区二区免费视频 | 亚洲人成免费 | 亚洲一区视频在线 | 99国产精品99久久久久久粉嫩 | 欧美第一页 | 四虎在线免费观看 | 中文字幕在线观看不卡 | 俺去俺来也在线www色官网 | 国产中文在线 | 国产一级生活片 | 久久久www成人免费精品 | 欧美色综合天天久久综合精品 | 日韩色网站 | 成人免费网站黄 | 毛片精品 | 欧美精产国品一二三区 | 伊人av在线 | 一区二区三区亚洲 | 又黄又爽又色视频 | 日韩av在线影院 | 狠狠狠干 | 可以看的毛片 | 国产精品天堂 | 日本加勒比视频 | 一级片在线 | 午夜精品久久久久久久久久蜜桃 | 中文字幕一区二区在线播放 | 男人天堂网av | 日本一区二区不卡视频 | 黄色理论片 | 一区二区免费视频 | 福利视频一区二区 | 国产裸体永久免费视频网站 | 中文在线观看免费视频 | 欧美一级片在线播放 | 精品日韩在线观看 | 欧美 日韩 国产 在线 |