Scala 集合 Tuple

Scala 集合

Scala集合部分包括List Set Tuple Map
集合的操作需要掌握增、删、迭代的方法
该部分为集合中Tuple的说明


Tuple

Scala Tuple 能放很多你想放的数据(不管数据类型)

创建Tuple:
1
2
3
4
5
6
scala> val a = (1,2,3,4,5)
a: (Int, Int, Int, Int, Int) = (1,2,3,4,5)

//会使用以下这种方式就可以了
scala> val b = (1,2,3,4,5,"a")
b: (Int, Int, Int, Int, Int, String) = (1,2,3,4,5,a)
取值方法1:(下标从1开始)
1
2
3
4
5
6
7
8
9
10
11
12
13
scala> b._1
res22: Int = 1

scala> b._4
res23: Int = 4

cala> val t = (1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22)
t: (Int, Int, Int, Int, Int, Int, Int, Int, Int, Int, Int, Int, Int, Int, Int, Int, Int, Int, Int, Int, Int, Int) = (1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22)

scala> val t = (1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23)
<console>:1: error: too many elements for tuple: 23, allowed: 22
val t = (1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23)
//*tuple 最多只能放22个值
取值方法2:
1
2
3
4
5
6
7
scala> val t = (("a",10),20,30)
t: ((String, Int), Int, Int) = ((a,10),20,30)

val t = (("a",10),20,30)
println(t._1._1 + "\t" + t._1._2 + "\t" + t._2 + "\t" + t._3)
结果:
a 10 20 30
以下的用法没太多用处,都是奇怪的用法:
1
2
3
4
5
6
7
8
9
10
11
12
//限制值数量的tuple
scala> val t = new Tuple3("a","b",3)
t: (String, String, Int) = (a,b,3)

scala> val t0 = 0 -> "zero"
t0: (Int, String) = (0,zero)

scala> val t1 = 1 -> "one"
t1: (Int, String) = (1,one)

scala> val t2 = 2 -> "two" -> "second"
t2: ((Int, String), String) = ((2,two),second)
tuple遍历
1
2
3
4
5
val b = (1,2,3,4,5,"a")

for (i <- 0 until b.productArity){
println(b.productElement(i))
}
结果
1
2
3
4
5
6
1
2
3
4
5
a
Tuple2 对偶(调换位置)
1
2
3
4
5
scala> val t = ("a","b")
t: (String, String) = (a,b)

scala> t.swap
res0: (String, String) = (b,a)