Scala快速入門-4-常用映射和元組操作

接之前文章: Scala快速入門系列:聲明變數、控制結構與函數、常用數組操作

知識點

  • 映射是鍵值對的集合
  • n個對象(並不一定要相同類型的對象)的集合,元組

映射

  • 構造一個不可變(默認)映射(構造一個不可變的Map[String, Int],其值不能被改變)

scala> val scores = Map("Alice" -> 90, "Bob" -> 88)scores: scala.collection.immutable.Map[String,Int] = Map(Alice -> 90, Bob -> 88)

  • 構造一個可變映射

scala> val scores1 = scala.collection.mutable.Map("Alice" -> 90, "Bob" -> 88)scores1: scala.collection.mutable.Map[String,Int] = Map(Bob -> 88, Alice -> 90)

  • 構造一個空映射,需要選定一個映射實現並給出類型參數(注意最後是 方括弧[] )

scala> val scores2 = new scala.collection.mutable.HashMap[String, Int]scores2: scala.collection.mutable.HashMap[String,Int] = Map()

  • 使用()獲取映射中的值某個鍵對應的值

scala> val aliceScore = scores("Alice")aliceScore: Int = 90

  • 判斷映射中是否包括某個指定鍵的值,用contains方法

scala> val bobScore = if(scores.contains("Bob")) scores("Bob") else 0bobScore: Int = 88// 簡潔寫法scala> val bobScore1 = scores.getOrElse("Bob", 0)bobScore1: Int = 88

  • 可變映射中更新某個映射中的值或添加一個新的映射關係

scala> val scores1 = scala.collection.mutable.Map("Alice" -> 90, "Bob" -> 88)scores1: scala.collection.mutable.Map[String,Int] = Map(Bob -> 88, Alice -> 90)scala> scores1("Bob") = 99scala> scores1res1: scala.collection.mutable.Map[String,Int] = Map(Bob -> 99, Alice -> 90)// 如果key不存在,添加一個新的映射關係scala> scores1("Fred") = 79scala> scores1res3: scala.collection.mutable.Map[String,Int] = Map(Bob -> 99, Fred -> 79, Alice -> 90)

  • 使用+=操作來添加多個關係(key不存在就添加,存在就更新)

scala> scores1 += ("Yezhiwei" -> 100, "Fred" -> 90)res4: scores1.type = Map(Bob -> 99, Fred -> 90, Alice -> 90, Yezhiwei -> 100)scala> scores1res5: scala.collection.mutable.Map[String,Int] = Map(Bob -> 99, Fred -> 90, Alice -> 90, Yezhiwei -> 100)

  • 使用-=操作來移除某個鍵值對

scala> scores1 -= "Bob"res6: scores1.type = Map(Fred -> 90, Alice -> 90, Yezhiwei -> 100)scala> scores1res7: scala.collection.mutable.Map[String,Int] = Map(Fred -> 90, Alice -> 90, Yezhiwei -> 100)

  • 不可變的映射可以有同樣的操作,只是返回一個新的映射,而不會更新原對象
  • 遍歷映射中的所有鍵值對

scala> for((k, v) <- scores) | println(k + ":" + v) // 運行結果 Alice:90Bob:88

  • 像Java一樣,keySet和values方法訪問鍵或值

scala> scores1.keysres9: Iterable[String] = Set(Fred, Alice, Yezhiwei)scala> for(v <- scores.values) println (v)9088

元組

  • 元組是不同類型的值的聚集,元組的值是通過將單個的值包含在圓括弧中構成的

scala> (1, 3.14, "Fred")res11: (Int, Double, String) = (1,3.14,Fred)

  • 元組的各組元從1開始的,不是0。與數組和字元串中的位置不同

scala> (1, 3.14, "Fred")res11: (Int, Double, String) = (1,3.14,Fred)scala> res11._1res12: Int = 1

  • 使用模式匹配來獲取元組的組元

scala> val (first, second, third) = res11first: Int = 1second: Double = 3.14third: String = Fred

  • 如果不需要所有的值,可以在相應位置上使用_佔位

scala> val (first, second, _) = res11first: Int = 1second: Double = 3.14

  • 元組可以用於函數需要返回不止一個值的情況

scala> "Hello Scala".partition(_.isUpper)res13: (String, String) = (HS,ello cala)


敬請期待下一篇~

作者:Yezhiwei

鏈接:Scala快速入門-4-常用映射和元組操作 | Yezhiwei Blog

聲明:本文來源於網路,版權歸作者所有,轉載請註明,若有什麼問題,請聯繫我們,謝謝!

推薦閱讀:

TAG:Scala | 快学Scala书籍 |