map

Map(映射)是一种可迭代的键值对(key/value)结构。

Map 中的键都是唯一的。所有的值都可以通过键来获取。

Map 有两种类型,可变与不可变 ,默认情况下 Scala 使用不可变 Map。

使用可变集合,你需要显式的引入 import scala.collection.mutable.Map

package chapter03

object test03 {
  def main(args:Array[String]):Unit={

    //TODO Map集合:K-V
    val map:Map[String,Int]=Map("a"->1,"b"->2,"c"->3)


    //添加数据
    val map1:Map[String,Int]=map+("d"->4)
    val map2:Map[String,Int]=map+("b"->4)  //key存在,跟新value

    println(map1.mkString(",")) //a -> 1,b -> 2,c -> 3,d -> 4
    println(map2.mkString(",")) //a -> 1,b -> 4,c -> 3

    //删除数据
    var map3:Map[String,Int]= map-("b")
    println(map3.mkString(",")) //a -> 1,c ->

    var map4:Map[String,Int]= map-("e")//key不存在,不做处理
    println(map3.mkString(",")) //a -> 1,c ->

    //修改数据
    var map5:Map[String,Int]=map.updated("a",9)
    println(map5.mkString(",")) //a -> 9,b -> 2,c -> 3

    //取数据
    //scala为防止集合出现空指针问题,提供了一个特殊的类Option,有两个特殊的对象,Some,None
    //如果确实没有获取到数据,为了不出现异常,Option类提供了有默认值的方法
    //println(map.get("b"))
    println(map.get("f").getOrElse(0))  //0为默认值


    //TODO 可变集合
    import scala.collection.mutable
    var mmap:mutable.Map[String,Int]=mutable.Map("aa"->11,"bb"->22,"cc"->33)



  }

}

 

 

package spark2021
import scala.collection.mutable.Map
object map_Test {
  def main(args: Array[String]): Unit = {

    var a:Map[String,Int]=Map("k1"->1,"k2"->2)//初始化构造函数
    a += ("k3"->3)//添加元素
    println(a)

    a += ("k1"->100)//已经存在添加元素会覆盖
    println(a)

//    Map(k2 -> 2, k1 -> 1, k3 -> 3)
//    Map(k2 -> 2, k1 -> 100, k3 -> 3)
    println("****************")

    var b:Map[String,Int]=Map("k1"->1,"k2"->2)//初始化构造函数
    var b1= b + ("k3"->3)//添加元素
    println(b)
    println(b1)

    var b3= b + ("k1"->100)//已经存在添加元素会覆盖
    println(b)
    println(b3)

//    Map(k2 -> 2, k1 -> 1)
//    Map(k2 -> 2, k1 -> 1, k3 -> 3)
//    Map(k2 -> 2, k1 -> 1)
//    Map(k2 -> 2, k1 -> 100)

    println("****************")
    var c:Map[String,Int]=Map("k1"->1,"k2"->2)//初始化构造函数

    var c1= c ++ Map("k3"->3)//添加元素
    println(c)
    println(c1)

    var c3= c ++ Map("k1"->100)//已经存在添加元素会覆盖
    println(c)
    println(c3)

//    Map(k2 -> 2, k1 -> 1)
//    Map(k2 -> 2, k1 -> 1, k3 -> 3)
//    Map(k2 -> 2, k1 -> 1)
//    Map(k2 -> 2, k1 -> 100)





  }

}

 

posted on 2019-10-10 18:05  happygril3  阅读(296)  评论(0)    收藏  举报

导航