映射spa
映射是對偶的集合。scala
聲明映射code
映射是對偶的集合。blog
a.聲明映射rem
b.映射中的鍵值對稱做對偶,用( , )表示get
c.當映射中不存在key時,取值會報錯,解決方案是使用 contains方法,或者getOrElse方法it
默認使用的映射中的value是不可修改的,位於scala.collection.immutable包中。若是要修改,必須使用位於scala.collection.mutable包中的Map類型io
若是要迭代每個對偶,仍是使用for循環for循環
看代碼:table
1 object TestScalaMap { 2 def main(args: Array[String]): Unit = { 3 //定義Map 4 var map1 = Map[String,Int]("zhangsan" -> 15000,"lisi"->16000,"wangwu"->9000 ) 5 //定義Map能夠用這種混合的方式 6 var map2 = Map[String,Int](("zhangsan",15000),("lisi"->16000),"wangwu"->9000) 7 8 for(i <- map2){ 9 println(i) 10 } 11 /* 12 * 輸出結果: 13 * (zhangsan,15000) 14 * (lisi,16000) 15 * (wangwu,9000) 16 */ 17 18 //加強代碼的健壯性 19 if(map1.contains("zhaoliu")) 20 println(map1("zhaoliu"))//沒有if判斷的話就會拋出異常 21 //scala寫法 22 println(map1.getOrElse("zhaoliu","沒有zhaoliu"))//輸出:沒有zhaoliu 23 24 for(i <- map2.keys){//.keys 取出map對應的key的集合 25 println(map2(i)) 26 } 27 /* 28 * 輸出 29 * 15000 30 * 16000 31 * 9000 32 */ 33 34 //循環遍歷map 35 for((k,v) <- map2){ 36 println(k + "-->" + v) 37 } 38 /* 39 * 輸出: 40 * zhangsan-->15000 41 * lisi-->16000 42 * wangwu-->9000 43 */ 44 45 //k,v互換 仍是要經過使用操做集合生成集合的yield 46 var map3 = for((k,v) <- map2)yield((v,k)) 47 println(map3) //輸出:Map(15000 -> zhangsan, 16000 -> lisi, 9000 -> wangwu) 48 49 //更改map中鍵的值 50 map1 += ("zhangsan"->16000) 51 println(map1)//輸出: Map(zhangsan -> 16000, lisi -> 16000, wangwu -> 9000) 52 53 //聲明一個可變的Map mutable "可變的" immutable "不可變的" 54 var map4 = scala.collection.mutable.Map[String,Int]("zhangsanfeng" ->15000,"zhangwuji" -> 6000) 55 map4("zhangsanfeng") = 19000 56 println(map4)//輸出 Map(zhangsanfeng -> 19000, zhangwuji -> 6000) 57 58 map4 -= ("zhangsanfeng") 59 println(map4)//輸出 Map(zhangwuji -> 6000) 60 61 map4.remove("zhangsanfeng") 62 println(map4) 63 64 //map4 ++= map3 //能夠用"++="向map中追加另一個map中的值 65 //可是此處會報錯,由於map4是[String,Int] 而map3是[Int,String] 66 67 } 68 }