首页
登录 | 注册

Java元组类型之javatuples

有时候经常需要返回2个值或多个值的一个序列,比如数据表的一条记录,文件的一行内容等。除了使用数组Array、集合(List、Set、Map)这些容器类型之外,在Java中我们就必须创建一个Class来作为返回类型。但很多时候我们只需要两三个字段,这个时候非要定义一个class就很烦琐了,所以这肯定不是一种最佳方式。

在很多语言中都提供元组类型Tuple的支持,比如 .NET Framework 最多支持7个元素的元组;Scala最多支持22个元素的元组;C++(STL)的Tuple;虽然JDK原生不支持元祖,但幸运的是有个框架javatuples支持元祖。其官网为:https://github.com/javatuples/javatuples ,最新版本是javatuples-1.2.jar,maven坐标为:

        <dependency>
            <groupId>org.javatuples</groupId>
            <artifactId>javatuples</artifactId>
            <version>1.2</version>
        </dependency>

最多支持10个元素: 

  • Unit<A> (1 element)
  • Pair<A,B> (2 elements)
  • Triplet<A,B,C> (3 elements)
  • Quartet<A,B,C,D> (4 elements)
  • Quintet<A,B,C,D,E> (5 elements)
  • Sextet<A,B,C,D,E,F> (6 elements)
  • Septet<A,B,C,D,E,F,G> (7 elements)
  • Octet<A,B,C,D,E,F,G,H> (8 elements)
  • Ennead<A,B,C,D,E,F,G,H,I> (9 elements)
  • Decade<A,B,C,D,E,F,G,H,I,J> (10 elements)

例如,我们定义一个三元素的元祖,如下:

package tuples;

import org.javatuples.Triplet;

public class TupleDemo {
    public static void main(String[] args) {
        Triplet<String,Integer,Double> triplet = Triplet.with("rensanning.iteye.com", 9527, 1.0);
        System.out.println(triplet.getValue(0)); // 通过index访问
        System.out.println(triplet.getValue1());  // 通过命名方法访问
    }
}

输出:

rensanning.iteye.com
9527


相关文章

  • 计算机基础 01 计算机基础之编程 02 计算机组成原理 03 计算机操作系统 04 编程语言分类 Python解释器 05 Python和Python解释器 06 执行Python程序的两种方式 07 Python集成开发环境 变量 08 ...
  • 一.前言 在日常开发中,我们经常会碰到需要在运行时才知道对象个数的情况,这种情况不能使用数组,因为数组是固定数量的,这个时候我们就会使用集合,因为集合可以存储数量不确定的对象. 集合类是特别有用的工具类,不仅可以存储数量不等的对象,还可以实 ...
  • 为什么说 Java 程序员到了必须掌握 Spring Boot 的时候?
    Spring Boot 2.0 的推出又激起了一阵学习 Spring Boot 热,就单从我个人的博客的访问量大幅增加就可以感受到大家对学习 Spring Boot 的热情,那么在这么多人热衷于学习 Spring Boot 之时,我自己也在 ...
  • final关键字可用于修饰类.方法和变量,final修饰的类不能被继承:final修饰的方法不可被重写:final修饰的变量不可被改变. 1. final类 final修饰的类不能被继承意思是final修饰的类不可以有子类,java.lan ...
  • java中常见的集合类大部分是非线程安全的,在多线程情况下会报并发修改异常(ConcurrentModificationException) 并发下的ArrayList类: 1 //集合类不安全的例子 2 public class Coll ...
  • java游戏开发杂谈
    线程,让游戏拥有了动态变化的能力. java的图形界面,在启动的时候,就开始了一个线程. 这个线程负责处理:JFrame.JPanel等的绘制.事件处理. 它是由操作系统调用的,在程序启动时开启,程序关闭时消亡. 这个线程里执行的逻辑,支撑 ...

2019 cecdns.com webmaster#cecdns.com
12 q. 0.077 s.
京ICP备10005923号