Scala中的Map

映射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 }
相關文章
相關標籤/搜索