介绍
Pairs(键值对)是一种存储成对数据的方式,包含两个字段——一个用于键(key),另一个用于值(value)。在 Java 中,Pairs 是从方法中返回多个值的绝佳方式。Java 中有多种使用 Pairs 的方法。本实验将通过代码示例,逐步指导你如何在 Java 中使用 Pairs。
Pairs(键值对)是一种存储成对数据的方式,包含两个字段——一个用于键(key),另一个用于值(value)。在 Java 中,Pairs 是从方法中返回多个值的绝佳方式。Java 中有多种使用 Pairs 的方法。本实验将通过代码示例,逐步指导你如何在 Java 中使用 Pairs。
使用以下命令创建一个新的 Java 类:
cd ~/project && touch PairsInJava.java
JavaFX 提供了一个内置的 Pair
类,可用于处理键值对。在这一步中,我们将学习如何使用 Pair
类来创建和操作键值对。将以下代码添加到你的 PairsInJava.java
文件中:
import javafx.util.Pair;
public class PairsInJava {
public static void main(String[] args) {
Pair<String, Integer> p1 = new Pair<>("apple", 1);
Pair<String, Integer> p2 = new Pair<>("banana", 2);
System.out.println("p1=" + p1.toString());
System.out.println("p2=" + p2.toString());
System.out.println("key of p1=" + p1.getKey());
System.out.println("value of p1=" + p1.getValue());
}
}
在上面的代码中,我们使用 Pair
类创建了两个键值对,然后分别打印了每个键值对的 key
和 value
。
要编译并运行代码,请执行以下命令:
javac PairsInJava.java && java PairsInJava
在这一步中,我们将学习如何使用对象数组在 Java 中创建键值对。将以下代码添加到你的 PairsInJava.java
文件中:
public class PairsInJava {
public static void main(String[] args) {
Object[] p1 = {"apple", 1};
Object[] p2 = {"banana", 2};
System.out.println("p1=" + p1[0] + "," + p1[1]);
System.out.println("p2=" + p2[0] + "," + p2[1]);
}
}
在上面的代码中,我们使用对象数组创建了两个键值对,然后分别打印了每个键值对的 key
和 value
。
要编译并运行代码,请执行以下命令:
javac PairsInJava.java && java PairsInJava
在这一步中,我们将学习如何实现一个自定义的 Pair 类来在 Java 中创建键值对。将以下代码添加到你的 PairsInJava.java
文件中:
class MyPair<T1, T2> {
private T1 key;
private T2 value;
public MyPair(T1 key, T2 value) {
this.key = key;
this.value = value;
}
public T1 getKey() {
return key;
}
public T2 getValue() {
return value;
}
public void setKey(T1 key) {
this.key = key;
}
public void setValue(T2 value) {
this.value = value;
}
}
public class PairsInJava {
public static void main(String[] args) {
MyPair<String, Integer> p1 = new MyPair<>("apple", 1);
MyPair<String, Integer> p2 = new MyPair<>("banana", 2);
System.out.println("p1=" + p1.getKey() + "," + p1.getValue());
System.out.println("p2=" + p2.getKey() + "," + p2.getValue());
}
}
在上面的代码中,我们定义了一个自定义类 MyPair
来创建键值对,然后分别打印了每个键值对的 key
和 value
。
要编译并运行代码,请执行以下命令:
javac PairsInJava.java && java PairsInJava
在这一步中,我们将学习如何使用 AbstractMap.SimpleEntry
类创建键值对。将以下代码添加到你的 PairsInJava.java
文件中:
import java.util.AbstractMap;
public class PairsInJava {
public static void main(String[] args) {
AbstractMap.SimpleEntry<String, Integer> p1 = new AbstractMap.SimpleEntry<>("apple", 1);
System.out.println("p1=" + p1.getKey() + "," + p1.getValue());
p1.setValue(2);
System.out.println("new p1=" + p1.getKey() + "," + p1.getValue());
}
}
在上面的代码中,我们使用 AbstractMap.SimpleEntry
类创建了一个键值对,并修改了它的值。
要编译并运行代码,请执行以下命令:
javac PairsInJava.java && java PairsInJava
在这一步中,我们将学习如何使用 AbstractMap.SimpleImmutableEntry
类创建一个不可变的键值对。将以下代码添加到你的 PairsInJava.java
文件中:
import java.util.AbstractMap;
public class PairsInJava {
public static void main(String[] args) {
AbstractMap.SimpleImmutableEntry<String, Integer> p1 = new AbstractMap.SimpleImmutableEntry<>("apple", 1);
System.out.println("p1=" + p1.getKey() + "," + p1.getValue());
// 无法设置值
// p1.setValue(2);
}
}
在上面的代码中,我们使用 AbstractMap.SimpleImmutableEntry
类创建了一个不可变的键值对。一旦初始化后,我们无法修改它的 key
和 value
。
要编译并运行代码,请执行以下命令:
javac PairsInJava.java && java PairsInJava
在这一步中,我们将学习如何使用 javatuples
库中的 Pair
类来创建键值对。将以下代码添加到你的 PairsInJava.java
文件中:
import org.javatuples.Pair;
public class PairsInJava {
public static void main(String[] args) {
Pair<String, Integer> p1 = Pair.with("apple", 1);
Pair<String, Integer> p2 = Pair.with("banana", 2);
System.out.println("p1=" + p1.getValue0() + "," + p1.getValue1());
System.out.println("p2=" + p2.getValue0() + "," + p2.getValue1());
}
}
在上面的代码中,我们使用 javatuples
库中的 Pair
类来创建并打印每个键值对的 key
和 value
。
要编译并运行代码,请执行以下命令:
javac -cp .:javatuples-1.2.jar PairsInJava.java && java -cp .:javatuples-1.2.jar PairsInJava
在这一步中,我们将学习如何使用 Vavr 库中的 Tuple2
类来创建键值对。将以下代码添加到你的 PairsInJava.java
文件中:
import io.vavr.Tuple2;
public class PairsInJava {
public static void main(String[] args) {
Tuple2<String, Integer> p1 = new Tuple2<>("apple", 1);
System.out.println("p1=" + p1._1() + "," + p1._2());
}
}
在上面的代码中,我们使用 Vavr 库中的 Tuple2
类来创建并打印一个键值对的 key
和 value
。
要编译并运行代码,请执行以下命令:
javac -cp .:vavr-0.10.3.jar PairsInJava.java && java -cp .:vavr-0.10.3.jar PairsInJava
在这一步中,我们将学习如何使用 Apache Commons 库中的 MutablePair
和 ImmutablePair
类来创建和操作键值对。将以下代码添加到你的 PairsInJava.java
文件中:
import org.apache.commons.lang3.tuple.ImmutablePair;
import org.apache.commons.lang3.tuple.MutablePair;
public class PairsInJava {
public static void main(String[] args) {
MutablePair<String, Integer> p1 = new MutablePair<>("apple", 1);
ImmutablePair<String, Integer> p2 = new ImmutablePair<>("banana", 2);
System.out.println("p1=" + p1.getLeft() + "," + p1.getRight());
System.out.println("p2=" + p2.getLeft() + "," + p2.getRight());
p1.setLeft("orange");
p1.setRight(3);
System.out.println("new p1=" + p1.getLeft() + "," + p1.getRight());
// 无法为不可变键值对设置值
// p2.setLeft("kiwi");
p2 = p2.withLeft("kiwi");
System.out.println("new p2=" + p2.getLeft() + "," + p2.getRight());
}
}
在上面的代码中,我们使用 Apache Commons 库中的 MutablePair
和 ImmutablePair
类来创建键值对,并修改它们的 key
和 value
。
要编译并运行代码,请执行以下命令:
javac -cp .:commons-lang3-3.13.0.jar PairsInJava.java && java -cp .:commons-lang3-3.13.0.jar PairsInJava
键值对是一种简单的方式来存储两个具有映射关系的数据项。在本实验中,我们使用了不同的类和方法来实现 Java 中的键值对。一些常见的方式包括使用外部库(如 Apache Commons 或 Vavr 库)、使用内置的 JavaFX Pair 类、创建自定义的键值对类以及使用对象数组。