• Scala中的Map


    映射

    映射是对偶的集合。

    声明映射

    映射是对偶的集合。

    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"))//输出:没有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 }
  • 相关阅读:
    深度优先和广度优先
    ajax<转>
    display:inline-block后会有间隙
    css样式多了个分号
    回答
    return false作用
    824. Goat Latin
    7. Reverse Integer
    48. Rotate Image
    9. Palindrome Number
  • 原文地址:https://www.cnblogs.com/DreamDrive/p/5645378.html
Copyright © 2020-2023  润新知