java Pair怎么使用
文章目录
- 1. 简介
- 2. Pair类的来源
- 3. 如何使用Pair类
- 4. Pair类的实际应用
- 5. Pair类的优点和缺点
1. 简介
- 什么是Pair
Pair是一个通用的数据结构,用于存储一对关联的对象,也就是两个元素。这两个元素可以是任何类型,并且它们之间没有特定的层次或顺序。在Java中,Pair类通常用于当方法需要返回两个相关值时,或者在数据结构中需要存储两个相关值时。
例如:如果你有一个方法需要返回两个相关的值,比如一个商品的名称和价格,你可以使用Pair类来封装这两个值,然后返回一个Pair对象。这样,你就可以在一个方法中返回两个值,而不是只能返回一个值,而且这两个值可以是任何类型,非常灵活和方便。
2. Pair类的来源
- Pair类在JavaFX中定义
JavaFX是Java的一个图形用户界面库,它提供了一个名为javafx.util.Pair的类。这个类用于表示一对元素。这个类是一个泛型类,可以存储任何类型的对象。它有两个属性,分别为Key和Value,可以通过getKey()和getValue()方法获取。需要注意的是,尽管属性名为Key和Value,但这并不意味着它们之间存在类似于键值对的映射关系,它们只是两个关联的对象。 - Pair类在Apache Commons Lang中的定义
Apache Commons Lang库提供了一个名为org.apache.commons.lang3.tuple.Pair的类。这个类也是一个泛型类,用于存储一对关联的对象。它提供了一些方法来获取和设置这两个对象,例如getRight()和getLeft()。和JavaFX的Pair类一样,这两个对象没有特定的层次或顺序。 - Pair类在Hutool中的定义
Hutool工具包也提供了一个名为cn.hutool.core.lang.Pair的类。这个类的设计和上述两个类类似。
3. 如何使用Pair类
- 创建Pair对象
在JavaFX、Apache Commons Lang和Hutool中,创建Pair对象的方式都非常直观和简单。
在JavaFX中,你可以使用new Pair<>(key, value)来创建一个新的Pair对象。例如:
Pair<String, Integer> pair = new Pair<>("Apple", 100);
在Apache Commons Lang中,你可以使用Pair.of(key, value)来创建一个新的Pair对象。例如:
Pair<String, Integer> pair = Pair.of("Apple", 100);
在Hutool中,你可以使用Pair.of(key, value)来创建一个新的Pair对象。例如:
Pair<String, Integer> pair = Pair.of("Apple", 100);
-
获取Pair对象的键和值
在JavaFX中,你可以使用pair.getKey()和pair.getValue()来获取Pair对象的键和值。在Apache Commons Lang和Hutool中,你可以使用pair.getLeft()和pair.getRight()来获取Pair对象的键和值。 -
使用Pair对象的实例
Pair对象可以用在任何需要存储或返回两个关联值的场景。例如,你可以使用Pair对象来存储一个地点的经纬度:
Pair<Double, Double> location = Pair.of(37.7749, -122.4194);
你也可以使用Pair对象来返回一个方法的两个结果:
public Pair<String, Integer> getProductNameAndPrice() {// ... some code to get the product name and pricereturn Pair.of(productName, price);
}
在这些情况下,Pair类提供了一种简单而直观的方式来处理两个关联的值。
4. Pair类的实际应用
- 在数据结构中使用Pair
Pair类在数据结构中的应用非常广泛。例如,你可以使用Pair类来存储一个键值对,这在处理诸如字典或映射等数据结构时非常有用。另一个常见的用例是使用Pair类来存储两个关联的值,例如在处理图形数据结构(如边的两个顶点)时。
// 使用Pair存储图的边
Pair<Integer, Integer> edge = Pair.of(1, 2);
- 在算法中使用Pair
在算法中,Pair类同样有广泛的应用。例如,在图形算法中,你可能需要存储一个节点和它的权重,这时可以使用Pair类。在动态规划算法中,你可能需要存储一个状态和它的值,这时也可以使用Pair类。
// 在图形算法中使用Pair存储节点和权重
Pair<Integer, Integer> nodeWeight = Pair.of(node, weight);// 在动态规划中使用Pair存储状态和值
Pair<State, Integer> stateValue = Pair.of(state, value);
5. Pair类的优点和缺点
- 优点
简洁性:Pair类提供了一种简单而直观的方式来处理两个关联的值,使得代码更加清晰和易于理解。
灵活性:Pair类可以用于处理任何类型的数据,这使得它在许多不同的场景中都非常有用。
易于使用:Pair类的API非常直观和易于使用,你可以很容易地创建Pair对象并获取其键和值。
- 缺点
可读性:虽然Pair类使得代码更加简洁,但是它也可能降低代码的可读性。例如,如果你看到一个方法返回一个Pair对象,你可能不清楚这个Pair对象的键和值分别代表什么,除非你查看了该方法的文档或源代码。
限制性:Pair类只能存储两个值。如果你需要存储三个或更多的值,你需要使用其他的数据结构,如Tuple类。
相关文章:
java Pair怎么使用
文章目录 1. 简介2. Pair类的来源3. 如何使用Pair类4. Pair类的实际应用5. Pair类的优点和缺点 1. 简介 什么是Pair Pair是一个通用的数据结构,用于存储一对关联的对象,也就是两个元素。这两个元素可以是任何类型,并且它们之间没有特定的层次…...
数据库doris中的tablet底层解析
在Doris中,tablet(数据片)是数据存储和管理的最小单元。理解tablet的底层原理有助于更好地理解Doris的高可用性、负载均衡和查询优化等特性。 Tablet 的概念 Tablet:Tablet是Doris中用于存储数据的最小物理单元。每个tablet通常对应于一个数据分区和一个分桶组合的子集。…...
江苏高防服务器都有哪些优势?
江苏高防服务器所针对的应用群体是不同的,高防服务器与普通服务器的应用效果和功能上是有着很大的差别,所以企业与用户在进行挑选高防服务器时,会更加看重服务器的质量与服务效果,本文就来聊一下江苏高防服务器的优势有哪些吧&…...
Pytest单元测试系列[v1.0.0][Pytest基础]
Pytest安装与配置 和Unittest一样,Pytest是另一个Python语言的单元测试框架,与Unittest相比它的测试用例更加容易编写、运行方式更加灵活、报错信息更加清晰、断言写法更简洁并且它可以运行有unittest和nose编写的测试用例。 Pytest 安装 启动命令行&…...
C/C++服务器基础(网络、协议、数据库)
Socket Socket是对网络中不同主机上的应用进程之间进行双向通信的端点的抽象。它可以看成是两个网络应用程序进行通信时,各自通信连接中的端点。Socket上联应用进程,下联网络协议栈,是应用程序通过网络协议进行通信的接口,是应用…...
Mysql系列-Binlog主从同步
原文链接:https://zhuanlan.zhihu.com/p/669450627 一、主从同步概述 mysql主从同步,即MySQL Replication,可以实现将数据从一台数据库服务器同步到多台数据库服务器。MySQL数据库自带主 从同步功能,经过配置,可以实现基于库、表…...
java设计模式(六)——原型模式
一、模式介绍 原型模式: 创建型模式之一,就是基于原型创建对象,也就是一个对象的产生可以不由零起步, 直接从一个已经具备一定雏形的对象克隆,然后再修改为所需要的对象。节约创建对象时间。 使用场景 如果对象创建成本比较大,例如某个对象里面的数据需要访问数据库才能…...
arm (exti中断)
src/key_it.c 1 #include "key_it.h"2 3 //按键1中断配置4 void key1_config()5 {6 //RCC章节7 //1:使能gpio f8 RCC->MP_AHB4ENSETR | (0x1<<5);9 //因为exti和gic属于芯片内部 所以无需使能10 11 //GPIO章节12 //1:将…...
触摸屏虚拟键盘组件 jQuery Virtual Keyboard使用 自定义键盘
如何在触摸设备上为输入域添加虚拟键盘? 一个插件可以解决这个问题,关键还支持高度自定义(git地址): GitHub - Mottie/Keyboard: Virtual Keyboard using jQuery ~ 官网地址:Virtual Keyboard 使用步骤&…...
面试题07-09
知道了 InnoDB 的索引实现后,就很容易明白为什么不建议使用过长的字段作为主键,因为所有辅助索引都引用主索引,过长的主索引会令辅助索引变得过大。再例如,用非单调的字段作为主键在 InnoDB 中不是个好主意,因为 InnoD…...
MySQL之binlog日志
原文链接:https://zhuanlan.zhihu.com/p/697078870 目录: binlog 是什么binlog 配置和查看binlog 的类型binlog 如何恢复数据binlog 是逻辑日志还是物理日志binlog 作用 注意:以下所有的操作都在 MySQL 8.0 版本实现。 1、binlog 是什么 …...
【大数据】什么是数据湖?一文揭示数据湖的本质
很多人跟我一样,对于数据湖充满好奇,也许还读了不少数据湖文章,但无论别人怎么说,你还是会觉得难以把握数据湖的本质。 有些人会望文生义说,数据湖嘛,就是什么东西都可以往里面扔,特别是对非结构…...
CSS【详解】文本相关样式(含 font 系列,文本排版,文本装饰,分散对齐,渐变色文本等)
文本风格 font-style font-style:italic 值描述normal默认值。浏览器显示一个标准的字体样式。italic加载对应字体的斜体字体文件,若找不到斜体字体文件,则进行物理上的倾斜。 标签默认font-style:italicoblique浏览器会显示一个倾斜的字体样式。 文本粗…...
加油卡APP系统开发,优惠加油收益
目前,汽车已经成为了不可或缺的出行工具,汽车加油更是成为了家家户户要做的事。不过随着油价的波动,车主急需能够进行优惠加油的渠道,因此,加油卡APP成为了大众汽车加油新的选择方式,用户在下载APP后即可享…...
el-scrollbar实现自动滚动到底部(AI聊天)
目录 项目背景 实现步骤 实现代码 完整示例代码 项目背景 chatGPT聊天消息展示滚动面板,每次用户输入提问内容或者ai进行流式回答时需要不断的滚动到底部确保展示最新的消息。 实现步骤 采用element ui 的el-scrollbar作为聊天消息展示组件。 通过操作dom来实…...
开源去除背景的项目:rembg 安装和部署
下载colne项目代码 git clone https://github.com/danielgatis/rembg.git安装依赖 pip install rembg pip install click pip install filetype pip install watchdog pip install aiohttp pip install gradio pip install asyncer测试使用 rembg i 照片.jpg zhaopian.jpg照…...
Docker 使用基础(1)—镜像仓库
🎬慕斯主页:修仙—别有洞天 ♈️今日夜电波:秒針を噛む—ずっと真夜中でいいのに。 0:34━━━━━━️💟──────── 4:20 🔄 ◀️ ⏸ …...
Git详细安装和使用教程
文章目录 准备工作-gitee注册认识及安装GitGit配置用户信息本地初始化Git仓库记录每次更新到仓库查看及切换历史版本Git忽略文件和查看文件状态Git分支-查看及切换Git分支-创建分支Git分支-合并及删除分支Git分支-命令补充Git分支-冲突需求: 准备工作-gitee注册 传送门: gite…...
LeetCode题练习与总结:反转字符串中的单词--151
一、题目描述 给你一个字符串 s ,请你反转字符串中 单词 的顺序。 单词 是由非空格字符组成的字符串。s 中使用至少一个空格将字符串中的 单词 分隔开。 返回 单词 顺序颠倒且 单词 之间用单个空格连接的结果字符串。 注意:输入字符串 s中可能会存在…...
2.pwn的linux基础(计算机内部数据结构存储形式)
linux基础 保护层级: 分为四个ring0-ring3 一般来说就两个,0和3 0为内核 3为用户 权限: 用户分为多个组 文件和目录等等的权限一般都是三个,即可读可写可执行。 读:R,写:W,执行:X 赋予一个可执行文件执行权限就是chmod x file…...
Flask RESTful 示例
目录 1. 环境准备2. 安装依赖3. 修改main.py4. 运行应用5. API使用示例获取所有任务获取单个任务创建新任务更新任务删除任务 中文乱码问题: 下面创建一个简单的Flask RESTful API示例。首先,我们需要创建环境,安装必要的依赖,然后…...
Objective-C常用命名规范总结
【OC】常用命名规范总结 文章目录 【OC】常用命名规范总结1.类名(Class Name)2.协议名(Protocol Name)3.方法名(Method Name)4.属性名(Property Name)5.局部变量/实例变量(Local / Instance Variables&…...
【SQL学习笔记1】增删改查+多表连接全解析(内附SQL免费在线练习工具)
可以使用Sqliteviz这个网站免费编写sql语句,它能够让用户直接在浏览器内练习SQL的语法,不需要安装任何软件。 链接如下: sqliteviz 注意: 在转写SQL语法时,关键字之间有一个特定的顺序,这个顺序会影响到…...
DIY|Mac 搭建 ESP-IDF 开发环境及编译小智 AI
前一阵子在百度 AI 开发者大会上,看到基于小智 AI DIY 玩具的演示,感觉有点意思,想着自己也来试试。 如果只是想烧录现成的固件,乐鑫官方除了提供了 Windows 版本的 Flash 下载工具 之外,还提供了基于网页版的 ESP LA…...
土地利用/土地覆盖遥感解译与基于CLUE模型未来变化情景预测;从基础到高级,涵盖ArcGIS数据处理、ENVI遥感解译与CLUE模型情景模拟等
🔍 土地利用/土地覆盖数据是生态、环境和气象等诸多领域模型的关键输入参数。通过遥感影像解译技术,可以精准获取历史或当前任何一个区域的土地利用/土地覆盖情况。这些数据不仅能够用于评估区域生态环境的变化趋势,还能有效评价重大生态工程…...
WEB3全栈开发——面试专业技能点P2智能合约开发(Solidity)
一、Solidity合约开发 下面是 Solidity 合约开发 的概念、代码示例及讲解,适合用作学习或写简历项目背景说明。 🧠 一、概念简介:Solidity 合约开发 Solidity 是一种专门为 以太坊(Ethereum)平台编写智能合约的高级编…...
JVM虚拟机:内存结构、垃圾回收、性能优化
1、JVM虚拟机的简介 Java 虚拟机(Java Virtual Machine 简称:JVM)是运行所有 Java 程序的抽象计算机,是 Java 语言的运行环境,实现了 Java 程序的跨平台特性。JVM 屏蔽了与具体操作系统平台相关的信息,使得 Java 程序只需生成在 JVM 上运行的目标代码(字节码),就可以…...
Linux 内存管理实战精讲:核心原理与面试常考点全解析
Linux 内存管理实战精讲:核心原理与面试常考点全解析 Linux 内核内存管理是系统设计中最复杂但也最核心的模块之一。它不仅支撑着虚拟内存机制、物理内存分配、进程隔离与资源复用,还直接决定系统运行的性能与稳定性。无论你是嵌入式开发者、内核调试工…...
Mysql8 忘记密码重置,以及问题解决
1.使用免密登录 找到配置MySQL文件,我的文件路径是/etc/mysql/my.cnf,有的人的是/etc/mysql/mysql.cnf 在里最后加入 skip-grant-tables重启MySQL服务 service mysql restartShutting down MySQL… SUCCESS! Starting MySQL… SUCCESS! 重启成功 2.登…...
STM32---外部32.768K晶振(LSE)无法起振问题
晶振是否起振主要就检查两个1、晶振与MCU是否兼容;2、晶振的负载电容是否匹配 目录 一、判断晶振与MCU是否兼容 二、判断负载电容是否匹配 1. 晶振负载电容(CL)与匹配电容(CL1、CL2)的关系 2. 如何选择 CL1 和 CL…...
