映射是 K/V 对偶的集合,对偶是元组的最简单形式。
元组可以装多个不同类型的值,如果需要集合中元素类型多样性,就可以采用元组。
创建元组
元组最多22个元素
// 二元元组
val t = (1, "scala")
val t = (1 -> "scala")
val t = 1 -> "scala" // (1, scala)
// 三元元组
val t = (1, "scala", 0.1)
val t = Tuple3(1, "scala", 0.1) // (scala,1,0.1)
类
二元元组是Tuple2 class的实例,三元元组是Tuple3 class的实例。
t.getClass // class scala.Tuple2
获取元组中的值
// 下标从1开始
val e = t._1 // 1
val e = t._2 // scala
t.productElement(1) // scala
通过模式匹配来把元组元素赋值给变量
val t, (a, b, c) = (1, "scala", 0.1)
// t:(Int, String, Double) = (1, "scala", 0.1)
// a:Int = 1
// b:String = scala
// c:Double = 0.1
将对偶的元组转成集合
val arr = Array(("id", 1),("uu", 1189))
// toMap将对偶的集合转成映射
arr.toMap // Map(id -> 1, uu -> 1189)
// 可以通过这种方式构建map
val map = Map("id" -> 1)
元组拉链
如果两个数组的元素个数不一致,拉链操作后生成的数组的长度为较小的数组的元素个数。
val ids = Array("id", "uu", "time")
val values = Array(1, 1189, 20190711)
val t = ids.zip(values) // Array(("id", 1), ("uu", 1189), ("time", 20190711))
t.toMap // Map("id" -> 1, "uu" -> 1189, "time" -> 20190711)
遍历
// 迭代遍历
val t = (1, "scala") // (1, scala)
val tt = t.productIterator
for (e <- tt)
println(e)
// 或者
tt.foreach(print(_))
// 1
// scala