1. Pair類概述
Hutool工具庫中的Pair
類是一個簡單的鍵值對數據結構,用于存儲兩個相關聯的對象。它類似于Map的Entry,但更加輕量級,適用于需要臨時存儲兩個相關聯數據的場景。
2. Pair類的主要特點
- 簡單輕量:不依賴復雜的數據結構
- 不可變:一旦創建,鍵值不可修改(Hutool的Pair是不可變的)
- 泛型支持:可以存儲任意類型的對象
- 實用方法:提供了一些便捷的操作方法
3. Pair類的使用場景
- 需要臨時存儲兩個相關聯的值時
- 方法需要返回兩個相關結果時
- 替代簡單的Map.Entry使用
- 需要將兩個值作為單一對象傳遞時
4. Pair類的基本使用
創建Pair對象
// 使用of方法創建
Pair<String, Integer> pair = Pair.of("age", 25);// 使用構造方法創建(Hutool 5.x版本后推薦使用of方法)
Pair<String, Integer> pair = new Pair<>("age", 25);
獲取鍵值
String key = pair.getKey(); // 獲取鍵
Integer value = pair.getValue(); // 獲取值
使用示例
// 返回兩個相關值
public Pair<String, Integer> getUserInfo() {String name = "張三";int age = 30;return Pair.of(name, age);
}// 使用示例
Pair<String, Integer> userInfo = getUserInfo();
System.out.println("姓名: " + userInfo.getKey());
System.out.println("年齡: " + userInfo.getValue());
5. Pair類的實用方法
Hutool的Pair類還提供了一些實用方法:
equals()
:比較兩個Pair是否相等hashCode()
:獲取Pair的哈希值toString()
:轉換為字符串表示
Pair<String, Integer> pair1 = Pair.of("a", 1);
Pair<String, Integer> pair2 = Pair.of("a", 1);System.out.println(pair1.equals(pair2)); // true
System.out.println(pair1.toString()); // (a,1)
6. Pair與其他類似結構的比較
特性 | Hutool Pair | Map.Entry | Apache Commons Pair | Java Record |
---|---|---|---|---|
可變性 | 不可變 | 通常可變 | 不可變 | 不可變 |
功能豐富度 | 簡單 | 中等 | 中等 | 簡單 |
是否需要Map上下文 | 不需要 | 需要 | 不需要 | 不需要 |
Java版本要求 | 無 | 無 | 無 | Java 14+ |
7. 實際應用案例
案例1:返回多個值
public Pair<Boolean, String> validateUser(String username, String password) {if (StringUtil.isEmpty(username)) {return Pair.of(false, "用戶名不能為空");}if (StringUtil.isEmpty(password)) {return Pair.of(false, "密碼不能為空");}// 驗證邏輯...return Pair.of(true, "驗證成功");
}
案例2:簡化臨時數據存儲
List<Pair<String, Integer>> nameAgePairs = new ArrayList<>();
nameAgePairs.add(Pair.of("張三", 25));
nameAgePairs.add(Pair.of("李四", 30));for (Pair<String, Integer> pair : nameAgePairs) {System.out.println(pair.getKey() + ": " + pair.getValue());
}
8. 注意事項
- Hutool的Pair是不可變的,如果需要可變Pair,可以考慮使用
MutablePair
- 對于復雜的數據關系,建議使用自定義類或Map
- 在Java 14+環境中,可以考慮使用record替代Pair
- 不要過度使用Pair,當數據關系明確時,使用有意義的類名更好
9. 總結
Hutool中的Pair類是一個非常實用的工具類,它提供了一種簡單的方式來處理需要成對出現的數據。雖然功能簡單,但在適當的場景下可以大大簡化代碼,提高開發效率。對于簡單的臨時數據存儲和返回多個值的場景,Pair是一個不錯的選擇。