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