Java中的配对类是什么?

时间:2020-02-23 14:37:23  来源:igfitidea点击:

Java Pair类以元组的形式存储两个值。
这对于使函数返回两个值很有用。

Java具有从Java 8开始内置的Pair类。
这就是为什么在本课中,我们不仅要看内置配对类,还要学习如何制作自己的配对类。

配对类在使用Tree数据结构时非常有用。
在树上使用递归时,pair类使将值从一个节点传递到另一个节点变得容易。
这些值可以是直到该节点的最小和最大节点值。
这将防止一次又一次地访问某些节点。

Java内置的Pair类

内置对类是JavaFX包的一部分。
但是,此软件包不是标准OpenJDK安装的一部分。
我们可以使用以下Maven依赖项将其添加到我们的项目中。

<dependency>
	<groupId>org.openjfx</groupId>
	<artifactId>javafx-base</artifactId>
	<version>14.0.1</version>
</dependency>

让我们开始使用Java中的内置对类。

导入配对类

导入使用:

import javafx.util.Pair;

内置对类使用键和值的表示法来存储对。

<Key, Value>

但是,不要将其与HashMap混淆。

声明一个配对对象

Pair<Integer, String> p = new Pair<>(7,"Hello");

这将创建<Integer,String>类型的对对象。

构造函数将值7和" hello"存储在Pair类中。

访问值

我们可以使用getKey()和getValue()方法从Pair对象访问值。

  • getKey获取第一个值。

  • getValue获取第二个值。

System.out.println("the first value is :" + p.getKey());
System.out.println("the first second is :" + p.getValue());

输出

本节的完整代码为:

import javafx.util.Pair;

public class Main {

public static void main(String[] args)
{
Pair<Integer, String> p = new Pair<>(7,"Hello");
System.out.println("the first value is :" + p.getKey());
System.out.println("the first second is :" + p.getValue());
}
}

创建我们自己的Pair类

创建我们自己的配对类是更好的选择,因为我们可以根据自己的喜好自定义它。
另外,如果您不在项目中使用JavaFX,则有必要完全避免使用JavaFX。

1.定义自定义对类

为了简单起见,我们使用一个存储两个值的对类。
整数和字符串。
使用泛型也是一个好主意。

public class Pair {
      int first;
      String second;
      public Pair(int first, String second) {
          this.first = first;
          this.second = second;
      }
}

已经定义了两个变量first和second来分别存储int和String类型的两个值。

构造函数采用两个值并将它们分配给变量。

2.配对活动

要使用刚刚创建的配对类,请定义配对类的对象并调用构造函数。

Pair a = new Pair(1, "one");

这将创建一个配对对象,其中第一个存储一个,第二个存储一个。

要访问这些值:

System.out.println("the first value is :" + a.first);
System.out.println("the first second is :" + a.second);

输出

由于pair class是我们定义的,因此我们可以自定义并添加打印功能。

配对类的代码:

public class Pair {
      int first;
      String second;
      public Pair(int first, String second) {
          this.first = first;
          this.second = second;
      }
      public void print(){
          System.out.println("< "+first+", "+second+ " >");
      }
      
      public static void main(String[] args){
          Pair a = new Pair(1,"Hello");
          a.print();
      }
}

输出

包括打印功能在内,这种方式是一种良好的编码习惯,因为现在可以将变量设为私有。
公开变量是不安全的。

将Pair类与函数一起使用

Pair类可用于从函数返回两个值。
为此,该函数的返回类型必须为pair。

public static Pair func (Scanner s){
  System.out.println("what is your name");
  String name = s.next();
  System.out.println("what is your favourite number?");
  int num = s.nextInt();
  Pair ans = new Pair(num, name);
  return ans;
}

从此函数返回的对象可以在主函数中捕获。
让我们在主体中打印对象。

public static void main(String[] args) {
Scanner s = New Scanner(System.in)
Pair ans = func(s);
ans.print();
}

本节的完整代码如下。

import java.util.Scanner;

public class Main {       
public static void main(String[] args) {
Scanner s = New Scanner(System.in)
Pair ans = func(s);
ans.print();
}

public static Pair func (Scanner s){
System.out.println("what is your name");
String name = s.next();
System.out.println("what is your favourite number?");
int num = s.nextInt();
Pair ans = new Pair(num, name);
return ans;
}
}