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
聲明:本文來源於網路,版權歸作者所有,轉載請註明,若有什麼問題,請聯繫我們,謝謝!
推薦閱讀: