Scala学习笔记--Map,Tuple,Zip总结

补充定义:
映射:键/值对偶的集合
在Scala中,映射是对偶的集合,对偶简单地说就是两个值构成的组,这两个值并不一定是同一类型的,例如:(“Alice”,10)
元组(tuple) 是不同类型的值得聚集

Map(构造映射)
“Alice” -> 10 “->”用来创建对偶 ->(“Alice”,10)
//构造一个不可以变的Map[String,Int],其值不可以变
val scores = Map(“Alice” -> 10,”Bob” -> 3,”Cindy” -> 8)
//> scores1 : scala.collection.immutable.Map[String,Int] = Map(Alice -> 10, Bob -> 3, Cindy -> 8)
//构造一个可以变的Map[String,Int],其值是可以变化的
val scores2 = scala.collection.mutable.Map(“Alice” -> 10,”Bob” -> 3,”Cindy” -> 8)

1>对Map进行 增删 操作
    获取映射中的值
    //如果映射包含键"Bob",返回对应的值;否则,返回0
    val bobScore  = scores2.getOrElse("Bob",0)    //> bobScore  : Int = 10
    //更新键"Bob"对应的值(前提scores是可变的)
    scores2("Bob") = 10
    // += 操作来添加多个关系
    scores2 += ("Bob" -> 10,"Fred" -> 7)
    // -=可以移除某个键额对应的值
    scores2 -= "Alice"

2>遍历映射中所有的键/值对偶
    for((k,v) <- 映射) 处理k和v

例如:
scores2.keySet //> res3: scala.collection.Set[String] = Set(Bob, Alice, Cindy)
for((k,v) <- scores2)println(k + ” : ” +v) //> Bob : 10
//| Alice : 10
//| Cindy : 8
//利用上述方法可以获取K,V的值。

Tuple(元组)
//创建一个元组
val t = (1,3.14,”Fred”) //> t : (Int, Double, String) = (1,3.14,Fred)
//可以通过_1,_2,_3方法其组元 注意:元组的下标是从1开始的,不是从0开始
val second = t._2 //> second : Double = 3.14
//使用模式匹配来获取元组的组元,例如
val (first1, second1, third1) = t //> first1 : Int = 1
//> second1 : Double = 3.14
//> third1 : String = Fred
//如果有些部件不需要则可以使用_
val (first,second,_) = t
//元组可以用于函数需要返回不止一个值的情况,返回的是一对字符串。
“Scala Spark”.partition(_.isUpper) //> res5: (String, String) = (SS,cala park)

Zip(拉链)
//可以把多个值绑在一块,以便它们能够被一起处理
val symbols = Array(“<”,”-“,”>”) //> symbols : Array[String] = Array(<, -, >)
val counts = Array(2,10,2) //> counts : Array[Int] = Array(2, 10, 2)
//输出对偶数组
val pairs = symbols.zip(counts) //> pairs : Array[(String, Int)] = Array((<,2), (-,10), (>,2))
for((s,n) <- pairs)Console.print(s*n) //打印 <<———->>,

你可能感兴趣的:(scala)