java元组_Java中的元组Tuple - Break易站

“元组”一词的意思是“由多个部分组成的数据结构”。因此,元组可以被定义为可以保存多个值的数据结构,并且这些值可以彼此相关/不相关。

例:

[极客,123,&#* @]

在此示例中,元组中的值完全没有相互关联。“极客”这个词有意义。“123”是数字。虽然“&#* @”只是一些特殊字符。因此,元组中的值可能相互关联,也可能不相关。

JavaTuple

JavaTuples是一个Java库,它提供了用于处理元组的类,函数和数据结构。它是有史以来最简单的java库之一。

JavaTuples提供以下类来使用:

JavaTuples最多允许10个元组。每个类都是:

For 1 element - Unit

For 2 elements - Pair

For 3 elements - Triplet

For 4 elements - Quartet

For 5 elements - Quintet

For 6 elements - Sextet

For 7 elements - Septet

For 8 elements - Octet

For 9 elements - Ennead

For 10 elements - Decade

JavaTuples还提供了2个非常常见的2元素元组类,相当于Pair:

KeyValue

LabelValue

注意:要运行JavaTuples程序,需要在IDE中添加org.javatuples库。IDE可以是Netbeans,Eclipse等。在这里下载JavaTuples Jar库。要在Netbeans中添加库。

JavaTuples 的基本特征是:

他们是Typesafe

他们是永恒的

他们是可迭代

它们是Serializable

它们是Comparable(实现Comparable )

他们实现equals()和hashCode()

他们还实现toString()

为什么更喜欢JavaTuples而非Lists / Arrays?

考虑一种情况,您希望将学生的详细信息存储在一个实体中,例如名称,卷号,父亲姓名,联系号码。现在,最常见的方法是构建一个可以根据需要获取字段的数据结构。这就是元组发挥作用的地方。使用Tuples,无需创建任何单独的数据结构。相反,对于这种情况,可以简单地使用四方。

因此,常见的数据结构如List,Array:

只能是特定类型。

可以是infinte元素。

鉴于,元组:

可以是任何类型,它们是类型安全的

可以是数量有限,从1-10

创建JavaTuples

注意:以下示例显示为通用方法。它们可以根据需要通过使用值替换。参数的数量和相应的Tuple类来用于任何JavaTuple 。

来自构造函数:语法:

NthTuple nthTuple = new NthTuple

(value 1,value 2,..,value n);

示例:

Pair pair = new Pair(

Integer.valurOf(1), "Geeks");

Sextet sextet

= new Sextet(

Integer.valueOf(1), "Geeks",

Integer.valueOf(2), "For",

Integer.valueOf(3), "Geeks"

);

使用with()方法:语法:

NthTuple nthTuple

= NthTuple.with(value 1,value 2,..,value n);

示例:

Pair pair = Pair.with(Integer.valurOf(1), "Geeks");

Sextet sextet

= Sextet.with(Integer.valueOf(1), "Geeks",

Integer.valueOf(2), "For",

Integer.valueOf(3), "Geeks");

来自其他系列:语法:

NthTuple nthTuple

= NthTuple.fromCollection(collectionWith_n_values);

示例:

Pair pair = Pair.fromCollection(collectionWith2Values);

Sextet sextet

= Sextet.fromCollection(collectionWith6Values);

获取JavaTuples值

语法:

NthTuple nthTuple = new NthTuple

(value 1,value 2,..,value n);

typeX valX = nthTuple.getValueX-1();

示例:

Pair < Integer, String >

pair = new Pair(Integer.valurOf(1), "Geeks");

// This will set val2 = "Geeks"

String val2 = pair.getValue1();

Sextet sextet

= new Sextet(

Integer.valueOf(1), "Geeks",

Integer.valueOf(2), "For",

Integer.valueOf(3), "Geeks"

);

// This will set val5 = 3

Integer val5 = sextet.getValue4();

注意:

值编号从索引0开始。因此对于第n个值,getter将是getValue n-1()

NthTuple对象只能将getValue 0()赋予getValue n-1()有效的getter(例如,Sextet没有getValue6()方法)。

所有getValueX()getter都是类型安全的,即不需要强制转换。这是因为元组类的类型参数化(““在Triplet)编译器将知道value0是A类型,value1是B类型,依此类推。

还有一个getValue(int pos)方法,但不建议使用它,因为编译器不能事先知道结果的类型,因此需要进行强制转换:Triplet triplet = ...

...

Integer intVal =(Integer)triplet.getValue(1);

类KeyValue和LabelValue将其getValue0()/ getValue1()方法分别重命名为getKey()/ getValue()和getLabel()/ getValue()。

设置JavaTuples值

由于JavaTuples是不可变的,这意味着无法在任何索引处修改值。

因此,JavaTuples提供setAtX(value),它在索引X处创建一个带有新值的元组副本,并返回该元组。

语法:

NthTuple nthTuple = new NthTuple

(value 1,value 2,..,value n);

nthTuple = nthTuple.setAtX(val);

示例:

Pair pair = new Pair(

Integer.valueOf(1), "Geeks");

pair = pair.setAt1("For"); // This will return a pair (1, "For")

Sextet sextet

= new Sextet(

Integer.valueOf(1), "Geeks",

Integer.valueOf(2), "For",

Integer.valueOf(3), "Geeks"

);

// This will return sextet (1, "Geeks", 2, "For", 3, "Everyone")

Sextet otherSextet

= sextet.setAt5("Everyone");

迭代JavaTuple值

javatuples中的所有元组类都实现了Iterable 接口。这意味着它们可以以与集合或数组相同的方式进行迭代。

示例:

Triplet triplet = ...... for (Object value : tuple) {     ... }

Java中的元组Tuple的类:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值