说明
元组,tuple,也是数据结构之一,虽然很多开发语言并不支持,但python、scala是支持的
元组是不可变的,不可添加、删除元素,也 不可以修改元素的值,可以包含 不同类型 的元素
注意: scala中的元组中最大只能有 22 个元素
应用场景
scala Map中的key-value其实就是元组
方法、函数 只能 返回 一个值,有时想返回 2个、3个值,就需要用 数组、或者
Map,甚至写一个封装类。使用 元组 就简单很多
创建元组
只需要用小括号 () 把元素括起来
//元素的个数不能超过22个
val t:(String,Int,String,Double) = ("李雷",20,"男",1.82)
省略写法:
//可以不加类型
val t2 = ("李雷",20,"男",1.82)
例子
def main(args: Array[String]): Unit = {
//元素的个数不能超过22个
val t:(String,Int,String,Double) = ("李雷",20,"男",1.82)
//可以不加类型
val t2 = ("李雷",20,"男",1.82)
println(t)
println(t.getClass.getSimpleName)
println(t2.getClass.getSimpleName)
}
执行结果:
(李雷,20,男,1.82)
Tuple4 // 有4个元素 tuple
Tuple4
访问元素
方式一
元组名._n
解释: n从 1 开始,与数组索引不同
例子
def main(args: Array[String]): Unit = {
val t:(String,Int,String,Double) = ("李雷",20,"男",1.82)
println(t._1)
println(t._2)
println(t._3)
println(t._4)
}
方式二
元组名.productElement(index)
解释: index从 0 开始,与数组索引相同
例子
def main(args: Array[String]): Unit = {
val t:(String,Int,String,Double) = ("李雷",20,"男",1.82)
println(t.productElement(0))
println(t.productElement(1))
println(t.productElement(2))
println(t.productElement(3))
}
遍历
通过 Iterator 实现
def main(args: Array[String]): Unit = {
val t:(String,Int,String,Double) = ("李雷",20,"男",1.82)
for(item <- t.productIterator){
println(item )
}
}
嵌套
//元组里的元素,也是元组
val t = ("李雷",20,("中国","北京","清华"),1.82)
println(t._3._3) // 清华