Java中的三元组是啥?

Posted

技术标签:

【中文标题】Java中的三元组是啥?【英文标题】:What is a Triple in Java?Java中的三元组是什么? 【发布时间】:2018-10-17 20:09:51 【问题描述】:

我遇到过如下代码:

public List<Triple<String, String, Instant>> methodName() 
    // Do something

Triple是什么,应该怎么用?

【问题讨论】:

它从哪个包导入Triple?只需找到相关的 Javadoc。 【参考方案1】:

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<>();

编辑

如cmets中所述,请注意它属于org.apache.commons.lang3.tuple,它不是Java中的内置类。

【讨论】:

这比尝试使用类更有效吗? @cody.tv.weber 我不认为它更有效。我认为这只是 Apache Commons 提供的一个方便的类 那么这本质上会类似于 Golang 的多值返回吗?好的,我想这可能很方便。【参考方案2】:

认为“元组”有 3 个值!

许多编程语言都提供了有效处理“固定”长度但每个条目类型不同的列表的方法。

Triple 类是为您提供类似功能的 Java 方式。像一对,但多了一个条目。

在其核心,固定长度元组允许您基于某种“排序”“松散耦合”不同类型的多个值。

【讨论】:

【参考方案3】:

当您需要一个数据结构来处理三个实体的列表时,您可以使用非常方便的 Triple。我写一个例子:

import java.util.ArrayList;
import java.util.List;
import org.apache.commons.lang3.tuple.Triple;

public class test2 

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() );
    



输出如下图所示:

【讨论】:

以上是关于Java中的三元组是啥?的主要内容,如果未能解决你的问题,请参考以下文章

java中的条件运算符是啥?

CF1598D Training Session题解

Neo4j-属性图和超图和三元组

首次设置 AWS EB 时创建的默认安全组是啥?

稀疏矩阵一般的压缩存储方法有两种

三元表达式是啥?