scala-基础-映射(1)

//映射(1)-构建,获取,更新,迭代,反转,映射(可变与不可变 互换)
class Demo1 extends TestCase {
    
    //构建与获取
    def test_create_^^(){
        //构建-不可变Map(映射),值不能改变
        val mapa = Map("001"->10,"002"->20,"CINDY"->30)  
        //mapa("001") = 2
        //构建可变Map(映射)
        val mapb = scala.collection.mutable.Map("001"->10,"002"->20,"CINDY"->30)
        mapb("001") = 22
        //构建空映射
        val mapc = new scala.collection.mutable.HashMap[String,Int]
        mapc.+=("002"->2)        
        //构建映射对偶的另一种方式
        mapc.+=(("12",15))
        
        //获取映射值
        val v1 = mapc ("12")      //方式一
        val v2 = mapc get("12")   //方式二
        
        //加入映射中不包含请求的键会抛出异常
        //val v3 = mapc ("012")
        //检测映射中是否包含某个键通过 contains
       val b = mapc contains("012") 
       val v3 = if (mapc contains("012")) mapc("012") else 0
       //简略写法
       val v4 = mapc getOrElse("012", 21)
       println(v4)
    }
    
   //更新 
   def test_update_&&(){
      val mapc = new scala.collection.mutable.HashMap[String,Int]
      //添加(单个对偶,多个对偶)
      mapc.+=("002"->2)
      mapc.+=(("000",-2),"001"->1)
      //更新键对应值,加入map集合中有该值,则重新赋值,没有的话则属于新增动作
      mapc("002") = 21    
      mapc("0001") = 101
      //移除
      mapc remove "000"
      mapc -= "000"
   } 
   
   //迭代映射,反转
   def test_foreach_&&(){
     val mapc = new scala.collection.mutable.HashMap[String,Int]
     mapc += ("JACK"->32,("lucy",21),"Mark"->18)
     for((k,v)<-mapc) println(k+" " +v)  //(k,v) 泛型元组
     for(k <- mapc.keySet) println(k+" "+mapc(k))
     for(v <- mapc.values) println(v)    
     
     val mapa = for((k,v) <- mapc) yield (v,k)
     val mapb = for((k,v) <- mapc if v>15) yield (v,k)
   }
   
   //映射(可变与不可变 互换)
   //不可变映射可通过 + 操作符返回一个新的不可变映射;不可变映射可通过 - 操作符返回一个新的不可变映射;
   def test_trunt_%%(){
     val ma = Map("0"->1)
     val mb = ma + ("0"->10)
     val mc = mb -("0") 
   }
   
}
原文地址:https://www.cnblogs.com/ak23173969/p/6792384.html