Java Pair

2025年5月3日 | 阅读 9 分钟

Pair 非常有用,当我们想从一个方法返回两个值时。例如,如果我们有一个计算数字平方根的方法,并且我们想打印数字及其平方根,我们可以使用 Pair 类将输出打印为数字及其平方根的组合(例如,(5, 25))。

Java 从 Java 8 开始提供了内置的 Pair 类。

在本节中,我们将了解如何在 Java 中使用 Pair 类。此外,我们将创建我们自定义的 Pair 类。

通过这种定制,可以处理各种类型的数据对和操作。通过实现自定义 Pair 类,开发人员可以自定义功能,例如添加额外的方法或限制,从而更精确地控制键值对。这种方法提高了代码的整体数据结构处理效率、可读性和可维护性。

Java 中的 Pair 类

自 Java 8 起,Java 提供了一个 Pair 类来以键值对的组合形式存储值。要以对的组合形式存储值,我们需要使用 javafx.util.Pair 类提供的参数化构造函数。

Pair 类在将值存储在树形数据结构中时非常有用。在对树形数据结构执行递归操作时,使用 Pair 类可以轻松地将值从一个节点传递到另一个节点。这些值可以是到该节点的最小和最大节点值。这将避免指针反复访问某些代码。

在 Java 中,Map 用于以键值对的形式存储值。它们将值存储为元组并将它们作为一个对象进行操作。

Java 的 Pair 类提供了一个有用的方法来管理键值对,从而更容易执行各种任务,例如组织和检索数据。自 Java 8 以来,javafx.util.Pair 类作为程序员的有用工具变得越来越重要,尤其是在处理树形数据结构时。通过使用 Pair 对象,开发人员可以在树的递归操作(如遍历和搜索)期间有效地在节点之间传输值。这使得数据(如最小和最大节点值)能够在树的各个区域之间顺畅移动,从而有助于优化效率并减少冗余的代码执行。

此外,尽管 Java Map 通常用于存储键值对,但在需要更简单、更有针对性的方法时,Pair 类提供了一种轻量级的替代方案——所有这些都无需处理完整的 Map 实现所带来的复杂性。通过利用 Pair 类的功能,开发人员可以提高其算法和数据结构的效率和清晰度,并简化其代码。

要实现 Pair 类,我们需要导入其父包

内置的 Pair 类使用与 Java 中的 Map 类似的键和值表示法来存储一对值。

声明

Pair 类的对象声明如下

上述语法将创建一个 <Integer, String> 类型的对象,并且 构造函数 将接收值 5 和“Five”并将其存储在 Pair 类中。

Pair 类方法

Java Pair 类提供了以下方法

getKey()

它获取给定对的键并返回指定对的键。声明如下

getValue()

它获取给定对的值并返回该对的值。声明如下

hashCode()

它为该对生成哈希码;此哈希码是使用该对的名称和值计算的。它覆盖了 HashCode 类并返回该对的哈希码。声明如下

equals()

它用于测试该对是否与另一对相等。如果未为测试指定对象或对象为 null,则返回 false。当且仅当两个给定对的名称和值相同时,这两个给定对才被视为相等。声明如下

它接受“ -o”参数对象以测试与该对的相等性。它覆盖了 Objects 类中的 equals 方法,如果给定的对相等,则返回 true;否则,返回 false。

toString()

它用于将该对表示为 String。在 toString() 方法中,始终使用默认的名称/值分隔符“=”。它覆盖了 Object 类中的 toString 方法并返回该对的 String 值。声明如下

Pair 类构造函数

Pair 类构造函数创建一个新的对。它将键和对值作为参数。声明如下

Pair 类类型

Java 中有两种 Pair 类,如下所示

  1. 不可变 Pair 类: 不可变 Pair 类是对象一旦定义,其值就无法更改的类;这意味着我们不能使用 setter 方法来更改定义的值。通常,一旦定义,值将保持不变。
  2. 可变 Pair 类: 可变类允许我们在程序中的任何时间更改值。我们可以使用 getter 和 setter 方法来访问和更改对象的值。即使我们在程序开始时定义了值,我们也可以在程序稍后更改它们。setValue(a,b)pair.getValue() 方法用于设置和访问对象值。
  3. 泛型 Pair 类: 泛型 Pair 类在定义键值类型时提供了灵活性。通过使用泛型,开发人员可以创建具有任意数据类型组合的键值 Pair 对象,使其高度通用并适应各种用例。例如,泛型 Pair 类的声明可能看起来像 Pair<T1, T2> pair = new Pair<>(key, value),其中 T1 和 T2 分别代表键和值的类型。

为什么我们需要 Pair 类?

Pair 类用于以键值对的形式获取值。换句话说,我们可以说 Pair 类提供了返回两个值的组合的方法。使用 Pair 类可能有很多原因。

以下是一些需要使用 Pair 类的情况

  • 假设我们要返回多个值。我们可以通过使用数组和哈希图等数据结构来实现,但当我们处理一组变量时,返回两者可能会很复杂。在这种情况下,Pair 类将非常有用。
  • 如果我们想执行数学运算并显示数字及其输出,我们可以通过使用 Pair 类轻松实现。
  • 如果我们想对树形数据结构执行操作。
  • Pair 类还可以在我们不需要为每对数据创建单独的类的情况下,用于移动或处理成对的相关数据。这为键值对处理提供了一种标准方法,从而缩短了开发时间并减少了代码复杂性。Pair 对象还可以用作返回类型或函数参数,从而使代码更具可读性和简洁性。
  • 通过将相关数据组合成一个单一的实体,Pair 类还提高了代码的可读性和可维护性。开发人员无需处理多个变量或数据结构,即可更轻松地识别和处理值对,从而降低了代码出错的可能性。

Pair 类示例

让我们通过一个基本示例来理解它

Pair 类是 JavaFX 的一部分,因此我们需要创建和配置一个 JavaFX 项目。请参阅如何在 Eclipse 中创建 JavaFX 项目

现在,在 src 文件夹下创建一个类文件。

我们正在创建一个 TestPair 类。

TestPair.java

输出

The key is :5
The Pair value is :Five  

解释

此 Java 代码使用了 JavaFX 库中的 Pair 类。在 main 方法中,创建了一个带有整数键 5 和字符串值“Five”的 Pair 实例。可以使用 getKey() 方法从对中获取键,使用 getValue() 方法获取值。最后,使用 System.out.println() 命令打印这些数字。正如前面的示例一样,由于 JavaFX 的 Pair 类,无需定义一个特殊类即可存储一对值。

自定义 Pair 类

如果我们不想使用内置的 Pair 类,我们可以使用泛型来自定义 Pair 类。请看下面的示例

文件名:CustomizedPair.java

从上面的代码中,我们创建了一个自定义 Pair 类,并将两个值存储在单个变量中并打印出来。

输出

< 1, Hello >

从上面的代码中,我们创建了一个自定义 Pair 类,并将两个值存储在单个变量中并打印出来。

解释

此 Java 代码介绍了 CustomizedPair 类。该类表示一个键值对,其中值是字符串 (String),键是整数 (int)。该类的构造函数使用接收到的输入值——整数键和字符串值——来初始化实例变量。另一种方法是 print(),它使用 System.out.println() 以“< 键, 值 >”的格式打印键值对。最后,在 main 方法中使用键为 1、值为“Hello”的 CustomizedPair 实例调用 print() 函数来打印该对,从而说明了该类的用法。

因此,使用泛型方法,我们可以在不使用 JavaFX 的情况下获得 Pair 类的优势。

让我们通过函数来理解它的行为。

带函数的 Pair 类

我们可以使用 Pair 类通过函数返回两个值。要执行此过程,函数的返回类型必须是 pair。请看下面的示例

文件名:TestPair2.java

输出

Enter Value
Five
Enter Key
5
< 5, Five >

解释

此 Java 代码允许用户通过控制台以交互方式输入键值对。它首先从 java.util 包导入 Scanner 类。TestPair2 类包含一个 main 方法,在该方法中创建了一个 Scanner 对象来从控制台读取输入。然后,它将 Scanner 对象作为参数传递给 func 方法,该方法提示用户输入值和键。在 func 方法中,它打印一条消息要求用户输入一个值,然后使用 s.next() 从用户那里读取字符串输入作为键。

然后,它打印另一条消息要求输入键,并使用 s.nextInt() 从用户那里读取整数输入作为值。在获取键和值之后,它使用提供的键和值创建一个新的 CustomizedPair 对象,并返回该对象。回到 main 方法,返回的 CustomizedPair 对象存储在变量 a 中,然后在其上调用 print 方法以将键值对打印到控制台。

结论

总而言之,Java 中的 Pair 类提供了一种方便的方式来存储键值对,在各种场景中提供了灵活性和易用性。通过将两个值封装到一个实体中,开发人员可以简化代码并提高可读性,尤其是在处理相关数据集时。

无论是通过内置的 javafx.util.Pair 类还是自定义实现,Pair 在从方法返回多个值、管理树形结构中的数据或仅仅是高效地组织相关数据方面都是有价值的工具。此外,自定义 Pair 类的能力允许开发人员根据特定需求定制功能,从而增强对键值对的控制,并提高整体代码的可维护性和效率。

总的来说,Java 中的 Pair 类是一种多功能且强大的工具,可增强 Java 程序员在处理数据结构和有效组织数据方面的能力。