映射和元組
1.構造映射
- 構造不可變的Map[String,Int],其值不能被改變。
val scores = Map("Alice" -> 10, "Bob" -> 10, "Cindy" -> 8)
- 構造可變映射
val scores = scala.collection.mutable.Map("Alice" -> 10, "Bob" -> 3, "Cindy" -> 8)
- -> 操作符來創建對偶
"Alice" -> 10
- 也可以用下面的方式來定義映射
val scores = Map(("Alice", 10),("Bob", 3),("Cindy", 8))
2.獲取映射中的值
- 在Scala中,函數和映射之間的相似性尤為明顯,將使用()表示法來查找某個鍵對應的值。
val bobsScore = scores("Bob")
Tips:如果映射不包含請求中使用的鍵,則會拋出異常。
- 要檢查映射中是否有某個指定的鍵,可以用contains方法:
val bobsScore = if (score.contain("Bob")) scores("Bob") else 0
Tips:由於這樣的組合調用十分普遍,以下是一個快捷寫法:
val bobsScore = scores.getOrElse("Bob", 0)
Tips_2:映射.get(鍵)這樣的調用返回一個Option對象,要麽是Some(鍵對應的值),要麽是None。
3.更新映射中的值
- 在可變映射中,可以更新某個映射的值,或者添加一個新的映射關系,做法是在 = 號的左側使用():
scores("Bob") = 10 //更新鍵"Bob"對應的值(假定scores是可變的)
- 也可以用 += 操作添加多個關系
scores += ("Bob" -> 10, "Fred" -> 7)
4.叠代映射
- 遍歷映射中所有的鍵/值對偶
for ((k,v ) -> 映射) //處理k和v
這裏的“魔法”是你可以在Scala的for循環中使用模式匹配。
5.元組:是不同類型的值的聚集
- 元組的值是通過將單個的值包含在圓括號中構成的。
(1, 3.14, "Fred") //該元組的類型為:Tuple3[Int, Double, java.lang.String]
- 使用方法_1、_2、_3訪問元組的元素,比如:
val second = t._2 //將second設為3.14
Tips:和數組或字符串中的位置不同,元組的個元組從1開始,而不是0.
- 通常,使用匹配模式來獲取元組的組元
val (first, second, third) = t //將first設為1,second設為3.14,third設為"Fred"
- 如果不是所有的部件都需要,可以在不需要部件的位置上使用_:
val (first, second, _) = t
6.拉鏈操作
- 使用元組的原因是把多個值綁在一起,以便它們能夠被一起處理,通常可以用zip方法來完成。
val symbols = Array("<", "-", ">")
val counts = Array(2, 10, 2)
val pairs = symbols.zip(counts)
輸出對偶的數組:
Array(("<", 2), ("-", 10), (">", 2)) //然後這些對偶就可以一起處理
Tips:可以用toMap方法將對偶的集合轉換成映射。
keys.zip(valuse).toMap
映射和元組