当前位置: 首页 > ds >正文

Hutool中的Pair类详解

1. Pair类概述

Hutool工具库中的Pair类是一个简单的键值对数据结构,用于存储两个相关联的对象。它类似于Map的Entry,但更加轻量级,适用于需要临时存储两个相关联数据的场景。

2. Pair类的主要特点

  • 简单轻量:不依赖复杂的数据结构
  • 不可变:一旦创建,键值不可修改(Hutool的Pair是不可变的)
  • 泛型支持:可以存储任意类型的对象
  • 实用方法:提供了一些便捷的操作方法

3. Pair类的使用场景

  1. 需要临时存储两个相关联的值时
  2. 方法需要返回两个相关结果时
  3. 替代简单的Map.Entry使用
  4. 需要将两个值作为单一对象传递时

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 PairMap.EntryApache Commons PairJava 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. 注意事项

  1. Hutool的Pair是不可变的,如果需要可变Pair,可以考虑使用MutablePair
  2. 对于复杂的数据关系,建议使用自定义类或Map
  3. 在Java 14+环境中,可以考虑使用record替代Pair
  4. 不要过度使用Pair,当数据关系明确时,使用有意义的类名更好

9. 总结

Hutool中的Pair类是一个非常实用的工具类,它提供了一种简单的方式来处理需要成对出现的数据。虽然功能简单,但在适当的场景下可以大大简化代码,提高开发效率。对于简单的临时数据存储和返回多个值的场景,Pair是一个不错的选择。

http://www.xdnf.cn/news/4845.html

相关文章:

  • Simufact Welding重塑新能源汽车电池盒焊接工艺
  • C程序题案例分析
  • Nacos源码—6.Nacos升级gRPC分析一
  • 缓存(1):三级缓存
  • 企业如何借助国外动态IP抢占海外市场先机?
  • uniapp 微信小程序使用图表
  • 人工智能在网络安全中的重要性
  • kotlin JvmName注解的作用和用途
  • 【WebRTC-13】是在哪,什么时候,创建编解码器?
  • 驱动开发硬核特训 · Day 30(下篇): 深入解析 lm48100q I2C 音频编解码器驱动模型(基于 i.MX8MP)
  • 【MCP】为什么使用Streamable HTTP: 相比SSE的优势与实践指南
  • 初识Dockerfile之RUN和WORKDIR
  • 【MySQL】第二弹——MySQL表的增删改查(CURD))
  • [ctfshow web入门] web57
  • 2025 后端自学UNIAPP【项目实战:旅游项目】3、API接口请求封装,封装后的简单测试以及实际使用
  • springCloud/Alibaba常用中间件之GateWay网关
  • 大型语言模型在网络安全领域的应用综述
  • 【WEB3】区块链、隐私计算、AI和Web3.0——数据民主化(1)
  • Python爬虫(21)Python爬虫进阶:Selenium自动化处理动态页面实战解析
  • RabbitMQ--基础篇
  • Android Studio 模拟器配置方案
  • 跨平台移动开发框架React Native和Flutter性能对比
  • 每周靶点分享:Angptl3、IgE、ADAM9及文献分享:抗体的多样性和特异性以及结构的新见解
  • 从代码学习深度学习 - 单发多框检测(SSD)PyTorch版
  • Comfyui 与 SDwebui
  • C++内存管理与模板初阶详解:从原理到实践
  • Java详解LeetCode 热题 100(13):LeetCode 53:最大子数组和(Maximum Subarray)详解
  • Android学习总结之算法篇八(二叉树和数组)
  • 10. CSS通配符与选择器权重深度解析:以《悯农》古诗为例
  • 比较Facebook与其他社交平台的隐私保护策略