Java 偶对

Java 偶对

原文: https://howtodoinjava.com/java/basics/pairs-in-java/

使用偶对类,例如javafx.util.PairImmutablePairMmutablePair(通用语言)和io.vavr.Tuple2类,在 Java 中学习如何使用键值对

阅读更多: Java 中的元组

1. 为什么需要偶对?

偶对提供了一种将简单键值关联的便捷方法。 在 Java 中,映射用于存储键值对。 映射存储成对的集合并作为整体进行操作。

有时,我们需要处理一些要求,其中键值对应独立存在。 例如

  • 偶对需要在方法中作为参数传递
  • 方法需要以偶对形式返回两个值

2. javafx.util.Pair

Java 核心 API 具有javafx.util.Pair作为最接近的匹配,用于具有两个值作为名称-值对的目的。 单击此链接以了解在 Eclipse 中添加 JavaFx 支持。

Pair类提供以下方法。

  • boolean equals​(Object o) – 测试此对与另一个对象的相等性。
  • K getKey() – 获取该对的键。
  • V getValue() – 获取该对的值。
  • int hashCode() – 为此对生成哈希码。
  • String.toString() – 此对的字符串表示形式。

让我们看一个 Java 程序来创建和使用对。

Pair<Integer, String> pair = new Pair<>(100, "howtodoinjava.com");

Integer key = pair.getKey();		//100
String value = pair.getValue();		//howtodoinjava.com

pair.equals(new Pair<>(100, "howtodoinjava.com"));	//true - same name and value

pair.equals(new Pair<>(222, "howtodoinjava.com"));	//false	- different name

pair.equals(new Pair<>(100, "example.com"));		//false	- different value

3. PairImmutablePairMutablePair – Apache 公共语言

Commons lang 库有一个有用的类,可以用于偶对,即org.apache.commons.lang3.tuple.Pair。 它有两个子类,也可以用于相同目的,即ImmutablePairMutablePair

  • Pair类是由两个元素组成的偶对。
  • Pair将元素称为“左”和“右”。
  • Pair还实现了Map.Entry接口,其中键为“左”,值为“右”。
  • ImmutablePairPair上的不可变表示。 如果将可变的对象存储在该对中,那么该对本身将有效地变为可变的。 该类也不是final,因此子类可能会添加不良行为。
  • 如果存储的对象是线程安全的,则ImmutablePair线程安全的
ImmutablePair<Integer, String> pair = ImmutablePair.of(100, "howtodoinjava.com");

Integer key = pair.getKey();			//100
String value = pair.getValue();			//howtodoinjava.com

//Integer key = pair.getLeft();			//100
//String value = pair.getRight();		//howtodoinjava.com

pair.equals(ImmutablePair.of(100, "howtodoinjava.com"));	//true - same name and value

pair.equals(ImmutablePair.of(222, "howtodoinjava.com"));	//false	- different name

pair.equals(ImmutablePair.of(100, "example.com"));		//false	- different value

不要忘记将库导入应用程序类路径。

<dependency>
	<groupId>org.apache.commons</groupId>
	<artifactId>commons-lang3</artifactId>
	<version>3.8.1</version>
</dependency>

4. io.vavr.Tuple2 - Vavr

用于存储键值对的另一个有用的类是Tuple2

Tuple2提供了许多有用的方法来处理其中存储的数据。 例如:

  • T1 _1() – 此元组的第一个元素的获取器。
  • T2 _2() – 此元组的第二个元素的获取器。
  • Tuple2 update1(T1 value) – 将此元组的第一个元素设置为给定值。
  • Tuple2 update2(T2 value) – 将此元组的第二个元素设置为给定值。
  • Map.Entry toEntry() – 将元组转换为java.util.Map.Entry元组。
  • Tuple2 swap() – 交换此元组的元素。
  • Tuple2 map(BiFunction mapper) – 使用映射器函数映射该元组的组件。
  • int compareTo(Tuple2 that) – 比较两个Tuple2实例。
Tuple2<Integer, String> pair = new Tuple2<>(100, "howtodoinjava.com");

Integer key = pair._1();			//100
String value = pair._2();			//howtodoinjava.com

pair.equals(new Tuple2<>(100, "howtodoinjava.com"));	//true - same name and value

pair.equals(new Tuple2<>(222, "howtodoinjava.com"));	//false	- different name

pair.equals(new Tuple2<>(100, "example.com"));		//false	- different value

不要忘记将库导入应用程序类路径。

<dependency>
	<groupId>io.vavr</groupId>
	<artifactId>vavr</artifactId>
	<version>0.10.2</version>
</dependency>

向我提供有关 Java 中的名称/值对的问题。

学习愉快!