Java 中的三元组是什么?
What is a Triple in Java?
我遇到过如下代码:
public List<Triple<String, String, Instant>> methodName() {
// Do something
}
什么是Triple
,应该如何使用?
Triple 当你想一次保存 3 个值并且你可以传递不同的数据类型时很有用。如果您只是想学习,那么下面是它的用法示例,但如果您想在代码中使用,那么我建议您改用 Objects
。
public class Triple<T, U, V> {
private final T first;
private final U second;
private final V third;
public Triple(T first, U second, V third) {
this.first = first;
this.second = second;
this.third = third;
}
public T getFirst() { return first; }
public U getSecond() { return second; }
public V getThird() { return third; }
}
这是实例化它的方法:
List<Triple<String, Integer, Integer>> = new ArrayList<>();
编辑
如评论中所讨论,请注意它属于org.apache.commons.lang3.tuple
它不是Java中的内置class。
认为 "tuple" 有 3 个值!
许多编程语言提供了有效处理长度为 "fixed" 但每个条目类型不同的列表的方法。
Triple class 是为您提供类似内容的 Java 方式。像一对,但多了一个条目。
在其核心,固定长度的元组允许您 "loosely couple" 基于某种 "ordering" 的不同类型的多个值。
当您需要一个数据结构来处理三个实体的列表时,您可能会使用三元组。这是一个小例子:
import java.util.ArrayList;
import java.util.List;
import org.apache.commons.lang3.tuple.Triple;
public class Test {
public static void main(String[] args) {
List<Triple<Integer, String, String>> tripleList = new ArrayList<>();
tripleList.add(Triple.of(100, "Japan", "Tokyo"));
tripleList.add(Triple.of(200, "Italy", "Rome"));
tripleList.add(Triple.of(300, "France", "Paris"));
for (Triple<Integer, String, String> triple : tripleList) {
System.out.println("Triple left = " + triple.getLeft());
System.out.println("Triple right = " + triple.getRight());
System.out.println("Triple middle = " + triple.getMiddle());
}
}
}
输出:
Triple left = 100
Triple right = Tokyo
Triple middle = Japan
Triple left = 200
Triple right = Rome
Triple middle = Italy
Triple left = 300
Triple right = Paris
Triple middle = France
我遇到过如下代码:
public List<Triple<String, String, Instant>> methodName() {
// Do something
}
什么是Triple
,应该如何使用?
Triple 当你想一次保存 3 个值并且你可以传递不同的数据类型时很有用。如果您只是想学习,那么下面是它的用法示例,但如果您想在代码中使用,那么我建议您改用 Objects
。
public class Triple<T, U, V> {
private final T first;
private final U second;
private final V third;
public Triple(T first, U second, V third) {
this.first = first;
this.second = second;
this.third = third;
}
public T getFirst() { return first; }
public U getSecond() { return second; }
public V getThird() { return third; }
}
这是实例化它的方法:
List<Triple<String, Integer, Integer>> = new ArrayList<>();
编辑
如评论中所讨论,请注意它属于org.apache.commons.lang3.tuple
它不是Java中的内置class。
认为 "tuple" 有 3 个值!
许多编程语言提供了有效处理长度为 "fixed" 但每个条目类型不同的列表的方法。
Triple class 是为您提供类似内容的 Java 方式。像一对,但多了一个条目。
在其核心,固定长度的元组允许您 "loosely couple" 基于某种 "ordering" 的不同类型的多个值。
当您需要一个数据结构来处理三个实体的列表时,您可能会使用三元组。这是一个小例子:
import java.util.ArrayList;
import java.util.List;
import org.apache.commons.lang3.tuple.Triple;
public class Test {
public static void main(String[] args) {
List<Triple<Integer, String, String>> tripleList = new ArrayList<>();
tripleList.add(Triple.of(100, "Japan", "Tokyo"));
tripleList.add(Triple.of(200, "Italy", "Rome"));
tripleList.add(Triple.of(300, "France", "Paris"));
for (Triple<Integer, String, String> triple : tripleList) {
System.out.println("Triple left = " + triple.getLeft());
System.out.println("Triple right = " + triple.getRight());
System.out.println("Triple middle = " + triple.getMiddle());
}
}
}
输出:
Triple left = 100
Triple right = Tokyo
Triple middle = Japan
Triple left = 200
Triple right = Rome
Triple middle = Italy
Triple left = 300
Triple right = Paris
Triple middle = France