映射
映射是对偶的集合。
声明映射
映射是对偶的集合。
a.声明映射
b.映射中的键值对称作对偶,用( , )表示
c.当映射中不存在key时,取值会报错,解决方案是使用 contains方法,或者getOrElse方法
默认使用的映射中的value是不可修改的,位于scala.collection.immutable包中。如果要修改,必须使用位于scala.collection.mutable包中的Map类型
如果要迭代每一个对偶,还是使用for循环
看代码:
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"))//输出:没有zhaoliu23 24 for(i <- map2.keys){ //.keys 取出map对应的key的集合25 println(map2(i))26 }27 /*28 * 输出29 * 1500030 * 1600031 * 900032 */33 34 //循环遍历map35 for((k,v) <- map2){36 println(k + "-->" + v)37 }38 /*39 * 输出:40 * zhangsan-->1500041 * lisi-->1600042 * wangwu-->900043 */44 45 //k,v互换 还是要通过使用操作集合生成集合的yield46 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 }