Hutool 库中使用 Pair类返回键值对
目录一、Pair 是什么二、最简单的例子三、它有什么作用四、为什么叫 Pair一对五、和 Map 有什么区别PairMap六、实际开发中的使用场景场景1返回两个值场景2遍历时临时保存两个对象场景3方法之间传递两个关联数据场景4排序七、Pair 不是 Map.Entry八、Hutool Pair 提供的方法九、与 MutablePair 的区别十、在实际项目中是否推荐使用一、Pair 是什么PairK, V是 Hutool库 提供的一个通用键值对Key-Value对象它的作用就是把两个相关的数据临时封装到一个对象中避免为了返回两个值而专门创建一个 Java Bean。它位于cn.hutool.core.lang.Pair它内部实际上非常简单只包含两个字段key和value。创建后就是一个不可变Immutable的键值对不能修改 key/value只能读取。(Hutool Plus)二、最简单的例子例如PairString,IntegerpairPair.of(Tom,18);System.out.println(pair.getKey());System.out.println(pair.getValue());输出Tom 18也可以直接 newPairString,IntegerpairnewPair(Tom,18);不过官方更推荐Pair.of(key,value)因为类型推导更方便。(Hutool Plus)三、它有什么作用很多时候一个方法想返回两个值。例如假设我们有一个方法需要返回用户ID用户姓名如果没有 Pair你只能方案一创建对象classUserInfo{privateLongid;privateStringname;}然后returnnewUserInfo(id,name);如果这个对象以后再也不用就会觉得比较麻烦。于是 Pair 就可以这样publicPairLong,StringgetUser(){returnPair.of(1001L,张三);}调用PairLong,StringusergetUser();Longiduser.getKey();Stringnameuser.getValue();四、为什么叫 Pair一对因为它就是(key,value)例如(Tom,18) (Apple,8.5) (北京,2150) (手机号,181****8888)就是一对数据。五、和 Map 有什么区别很多初学者都会疑惑Map 也是 Key - Value为什么还要 Pair区别非常大。Pair只表示一个 Key 一个 Value例如(Tom,18)只有这一组。MapMap 保存的是很多 Pair例如Tom - 18 Jack - 20 Lucy - 22实际上可以理解成Map │ ├── Pair(Tom,18) ├── Pair(Jack,20) ├── Pair(Lucy,22)所以Pair 表示一条数据而 Map 表示很多条 Pair。六、实际开发中的使用场景场景1返回两个值例如查询数据库需要返回成功数量失败数量publicPairInteger,Integercount(){returnPair.of(120,5);}调用PairInteger,Integerresultcount();System.out.println(result.getKey());//120System.out.println(result.getValue());//5场景2遍历时临时保存两个对象例如订单订单号 订单金额可以写PairString,BigDecimalorderPair.of(NO10001,newBigDecimal(99.8));场景3方法之间传递两个关联数据例如登录成功后需要返回token user可以PairString,Userlogin(){returnPair.of(token,user);}场景4排序例如统计词频apple - 10 banana - 6 cat - 9可以转成ListPairString,Integer然后根据 value 排序。七、Pair 不是 Map.Entry很多人第一次看会误认为Pair Map.Entry其实不是。例如MapString,IntegermapnewHashMap();遍历for(Map.EntryString,Integerentry:map.entrySet()){}这里得到的是Map.Entry不是Pair虽然Map.Entry Pair都表示key value但是它们属于两个不同的类。八、Hutool Pair 提供的方法常用方法非常少Pair.of(key,value)创建对象。getKey()获取 Key。getValue()获取 Value。equals()判断两个 Pair 是否相同。例如Pair.of(A,1)和Pair.of(A,1)相等。hashCode()用于 HashMap、HashSet 等集合。toString()打印字符串。九、与 MutablePair 的区别Hutool 还有一个MutablePair顾名思义Mutable 可修改例如MutablePairString,IntegerpairnewMutablePair(Tom,18);pair.setKey(Jack);pair.setValue(20);而普通Pair创建以后PairString,IntegerpairPair.of(Tom,18);只能pair.getKey();pair.getValue();不能修改内部的值因此更安全。(Hutool Plus)十、在实际项目中是否推荐使用推荐使用Pair的场景✔ 方法临时返回两个值✔ Stream 流处理中临时组合两个对象✔ 排序、中间计算过程中的数据封装✔ 工具类内部使用不推荐使用的场景❌ Controller 返回值接口响应应该使用明确的 DTO❌ Service 对外接口长期暴露返回UserInfoDTO等语义明确的对象更好❌ 数据库实体Entity❌ 业务对象VO、DTO、BO例如// ✔ 合适PairBigDecimal,BigDecimalcalculateTax();// ❌ 不推荐PairString,ObjectqueryUser();第二种代码可读性很差别人很难知道key到底代表什么是用户ID用户名手机号还是Token如果改成UserInfoDTO就一目了然。总结一句话PairK, V本质上就是一个轻量级的二元组Tuple用于临时封装两个有关联的对象。它非常适合工具类、算法和中间计算过程但不适合作为复杂业务对象的长期替代品。

相关新闻

C/C++链接器如何处理同名函数冲突:静态库与动态库的符号决议机制

C/C++链接器如何处理同名函数冲突:静态库与动态库的符号决议机制

1. 项目概述:同名函数与链接库的“撞车”现场 在C/C开发中,尤其是构建大型项目或集成第三方库时,我们经常会遇到一个看似简单却暗藏玄机的问题:当链接器(Linker)试图将多个静态库(.a/.lib&#…

2026/7/31 13:29:18 阅读更多 →
UniApp小程序白屏问题全解析:从诊断到根治的实战指南

UniApp小程序白屏问题全解析:从诊断到根治的实战指南

1. 项目概述:当你的UniApp小程序突然“失明” 做UniApp微信小程序开发,最让人血压飙升的瞬间之一,莫过于本地调试一切正常,真机预览或上传体验版后,页面一片惨白,除了一个孤零零的导航栏或者TabBar&#x…

2026/7/30 4:40:05 阅读更多 →
Unity游戏开发:构建健壮存档系统的完整方案与避坑指南

Unity游戏开发:构建健壮存档系统的完整方案与避坑指南

1. 项目概述:为什么存档系统是游戏体验的基石在独立游戏开发圈子里,我见过太多因为存档系统没做好而“翻车”的案例。一个玩家辛辛苦苦打了几个小时,因为游戏崩溃或者误操作,进度一夜回到解放前,那种挫败感足以让他在S…

2026/7/30 4:40:05 阅读更多 →

最新新闻

SysML v2 2025-02版本发布:新一代系统建模语言的深度解析与实战指南

SysML v2 2025-02版本发布:新一代系统建模语言的深度解析与实战指南

SysML v2 2025-02版本发布:新一代系统建模语言的深度解析与实战指南 【免费下载链接】SysML-v2-Release The latest incremental release of SysML v2. Start here. 项目地址: https://gitcode.com/gh_mirrors/sy/SysML-v2-Release SysML v2 2025-02版本作为…

2026/7/31 13:28:34 阅读更多 →
OpenAI API成本优化:Responses API与缓存策略实践

OpenAI API成本优化:Responses API与缓存策略实践

1. 项目概述:OpenAI Responses API 的平民化解决方案最近在开发AI应用时,我发现官方OpenAI API的定价对个人开发者和小团队实在不够友好。经过两周的实测,我找到了一套稳定可靠的替代方案,成本能控制在官方价格的1/3到1/2之间。这…

2026/7/31 13:28:34 阅读更多 →
大模型学习指南:从认知构建到就业保研全解析

大模型学习指南:从认知构建到就业保研全解析

1. 大模型学习全指南:认知、就业与保研三维路径解析 大模型技术正在重塑整个AI行业的发展格局。根据最新行业报告显示,全球大模型相关岗位需求同比增长超过300%,顶尖高校AI实验室的大模型研究方向录取竞争比达到15:1。面对这一技术浪潮&#…

2026/7/31 13:28:34 阅读更多 →
DeepSeek表格复制与跨平台处理全指南

DeepSeek表格复制与跨平台处理全指南

1. DeepSeek表格复制功能全解析作为一款新兴的AI生产力工具,DeepSeek近期因其强大的文档处理能力受到广泛关注。在实际办公场景中,表格数据的快速复制迁移是高频需求,但不同平台间的格式兼容问题常常让人头疼。本文将详细拆解DeepSeek环境下的…

2026/7/31 13:28:34 阅读更多 →
ViTPose:重新定义人体姿态估计的视觉Transformer革命

ViTPose:重新定义人体姿态估计的视觉Transformer革命

ViTPose:重新定义人体姿态估计的视觉Transformer革命 【免费下载链接】ViTPose The official repo for [NeurIPS22] "ViTPose: Simple Vision Transformer Baselines for Human Pose Estimation" and [TPAMI23] "ViTPose: Vision Transformer for Ge…

2026/7/31 13:28:33 阅读更多 →
ArkTS 进阶之道(24):LocalStorage 页面级状态边界——为啥同页面多组件共享页面卸载就销毁

ArkTS 进阶之道(24):LocalStorage 页面级状态边界——为啥同页面多组件共享页面卸载就销毁

ArkTS 进阶之道(24):LocalStorage 页面级状态边界——为啥同页面多组件共享页面卸载就销毁本文是「ArkTS 进阶之道」系列第 24 篇,续「ArkUI 状态联动」深水区。上篇讲 AppStorage 应用级状态存储槽边界(所有页面共享&…

2026/7/31 13:27:33 阅读更多 →

日新闻

物理复制比逻辑复制好在哪?数据库复制原理详解

物理复制比逻辑复制好在哪?数据库复制原理详解

数据库复制是把主库数据同步到备库的机制,分为逻辑复制和物理复制两种。逻辑复制传输的是 SQL 语句或行变更事件,物理复制传输的是存储引擎底层的物理日志。阿里云 PolarDB(云原生数据库)采用物理复制,在同步延迟、数据…

2026/7/31 0:00:34 阅读更多 →
BilibiliDown:3分钟学会B站视频下载的终极指南

BilibiliDown:3分钟学会B站视频下载的终极指南

BilibiliDown:3分钟学会B站视频下载的终极指南 【免费下载链接】BilibiliDown (GUI-多平台支持) B站 哔哩哔哩 视频下载器。支持稍后再看、收藏夹、UP主视频批量下载|Bilibili Video Downloader 😳 项目地址: https://gitcode.com/gh_mirrors/bi/Bilib…

2026/7/31 0:00:34 阅读更多 →
有哪些游戏数据AI平台?游戏行业Data+AI融合方案盘点

有哪些游戏数据AI平台?游戏行业Data+AI融合方案盘点

当前,游戏行业的“DataAI融合”已从概念验证进入价值落地阶段。根据IDC 2025年数据,中国AI游戏云市场规模已达18.6亿元;同时,游戏研发环节AI渗透率高达86%,生成式AI内容普及率超过50%。面对庞大的市场,游戏…

2026/7/31 0:00:34 阅读更多 →

周新闻

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 数据集6000张 完整源码已标注数据集训练好的模型环境配置教程程序运行说明文档,可以直接使用!系统支持图片、视频、摄像头等多种方式检测裂缝,功能强大实用。 1数据集6000张 8各类别

2026/7/31 1:03:03 阅读更多 →
深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

pubg数据集 精选原图1.42万数据 1.49万标签 无任何重复、算法增强或冗余图像! pubg绝地求生目标检测数据集 1分类:e_body,14905个标签,txt格式 共计14244张图,99%为640*640尺寸图像 适合yolo目标检测、AI训练关键词&am…

2026/7/29 14:34:28 阅读更多 →
Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex检测数据集数据集详情检测类别: allies enemy tag图片总量:7247张训练集:5139张验证集:1425张测试集:683张标注状态:全部已标注,即拿即用数据格式:支持YOLO格式及其他格式&#…

2026/7/31 4:19:39 阅读更多 →

月新闻