zoukankan      html  css  js  c++  java
  • 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 }
  • 相关阅读:
    CodeForces 681D Gifts by the List (树上DFS)
    UVa 12342 Tax Calculator (水题,纳税)
    CodeForces 681C Heap Operations (模拟题,优先队列)
    CodeForces 682C Alyona and the Tree (树上DFS)
    CodeForces 682B Alyona and Mex (题意水题)
    CodeForces 682A Alyona and Numbers (水题,数学)
    Virtualizing memory type
    页面跳转
    PHP Misc. 函数
    PHP 5 Math 函数
  • 原文地址:https://www.cnblogs.com/DreamDrive/p/5645378.html
Copyright © 2011-2022 走看看