【大数据基础知识】Scala中的元组Tuple

发布 : 大数据培训      来源:大数据干货资料

2021-09-08 13:38:16

熟悉Java的朋友对数组或列表都非常了解,数组或列表都是集合类型,存放的都是相同类型的数据。元组也是一种集合类型,但是可以容纳不同类型的对象。简单来说,元组是不同类型元素的集合。

1、 元组的定义

定义元组时,使用小括号将多个元素括起来,元素之间使用逗号分隔,元素的类型可以不同,元素的个数可以是不超过22个的任意多个。

定义元组可以使用两种形式:

(1)直接使用括号,在括号中封装数据()

(2)使用new Tuple

scala> val tp=(1,6,"hello",false,8.6)

tp: (Int, Int, String, Boolean, Double) = (1,6,hello,false,8.6)

scala> val tp2=new Tuple5(1,3,true,5.5,"aaa")

tp2: (Int, Int, Boolean, Double, String) = (1,3,true,5.5,aaa)

scala> val tp3=new Tuple3(1,"",3.6)

tp3: (Int, String, Double) = (1,"",3.6)

从上面示例中可以看到,使用new Tuple形式时,要根据元组的元素个数,使用不同的Tuple+n的形式,n就是元素的个数,n最大是22。

2、 元组的使用

元组的操作通常是对元组中的各个元素进行操作,如何获取元组中的元素呢?类似于数组,也是通过下标的形式获取元组中的各个元素。要注意的是,下标从1开始。

如tp._1就表示tp元组的第一个元素。

scala> val tp=(1,6,"hello",false,8.6)

tp: (Int, Int, String, Boolean, Double) = (1,6,hello,false,8.6)

scala> tp._1

res0: Int = 1

scala> tp._3

res1: String = hello

scala> tp._6

:13: error: value _6 is not a member of (Int, Int, String, Boolean, Double)

tp._6

^

从上面的示例中可以看到,tp._n取到的就是tp元组中的第n个元素。但要注意的是下标不能越界,否则就会报错。

3、 对偶元组

元组中有一种特殊的元组,就是对偶元组。对偶元组指的是元组中只有两个元素。之所以说它特殊,是因为在对偶元组上可以有一些特殊的操作,如,对偶元组元素的交换。而且在实际的应用中对偶元组用的也非常多。

scala> val tp2=("tom",88)

tp2: (String, Int) = (tom,88)

scala> tp2.swap

res4: (Int, String) = (88,tom)

使用swap方法,实现了对偶元组元素的交换。

4、 数组的拉链操作与元组

两个数组可以通过zip方法实现拉链操作,得到的结果会是一个新的数组,数组的类型是对偶元组类型。

scala> val name=Array("tom","mary","mike")

name: Array[String] = Array(tom, mary, mike)

scala> val age=Array(20,18,26)

age: Array[Int] = Array(20, 18, 26)

scala> val res=name.zip(age)

res: Array[(String, Int)] = Array((tom,20), (mary,18), (mike,26))

此时如果再对结果res使用zipWithIndex方法,得到的数组元素类型会是嵌套的对偶元组类型。

scala> val res2=res.zipWithIndex

res2: Array[((String, Int), Int)] = Array(((tom,20),0), ((mary,18),1), ((mike,26),2))

THE END  

声明:本站稿件版权均属中公教育优就业所有,未经许可不得擅自转载。

领取零基础自学IT资源

涉及方向有Java、Web前端、UI设计、软件测试、python等科目,内容包含学习路线、视频、源码等

点击申请领取资料

点击查看资料详情 

收起 


 相关推荐

问题解答专区
返回顶部