1. 程式人生 > >映射和元組

映射和元組

ble collect bsp cor 循環 開始 添加 組合 pair

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

    

映射和元組