scala教程:元组tuple

说明

元组,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) // 清华

原文出处:/show_1IX1Dlw0dzag.html