Skip to content

元组

1. 元组简介

如果想让无关的数据当做一个整体使用,这时需要使用元组来表示,元组也是可以理解为一个容器,可以存放各种相同或不同类型的数据。需要注意的是元组中最大只能有22个元素。元组也有类型,叫做TupleN[Classtype...]

2. 元组的使用

scala
def main(args: Array[String]): Unit = {
    val tuple1: Tuple3[Int, String, Int] = (1, "zhangsan", 30)
    println(tuple1)
    // tuple的简写
    val tuple2: (String, String, String) = ("hello", "use", "scala")
    println(tuple2)
    // 只能最多22个,否则编译通不过
    //val tuple3 = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24)
    //println(tuple3)
    // 没有循环遍历的方法,因为数据之间是没有关系的
    // 如果需要访问里面的数据,可以采用顺序号访问
    println(tuple1._1)
    println(tuple1._2)
    println(tuple1._3)
    // println(tuple1._4)
    println("*****************************")
    // 获得迭代器
    tuple2.productIterator.foreach(println)
    // 通过索引访问数据
    println(tuple2.productElement(0))
    // 如果元组的大小为2,那么成为对偶元组,也称为键值对对象
    val t1 = ("name", "jack")
    val t2 = ("age", 32)
    // Map中的键值对其实就是元组,是由大小为2的元组组成
    // ->它是一个方法, 所有的对象都具有->方法,内部也是生成二元元组
    val tuple3: (String, String) = "address" -> "chengdu"
    println(tuple3)
    // 比如元组的嵌套
    val tuple4: (((Int, Int), Int), Int) = 1 -> 2 -> 3 -> 4
    println(tuple4)
    // Map也可以这样声明
    val map: Map[Int, String] = Map((1, "test"), (55, "lichun"), (6, "school"))
    println(map)
}

运行结果:
Alt text