美文网首页
scala之map

scala之map

作者: 虚心若愚_b5c1 | 来源:发表于2020-01-08 15:27 被阅读0次

    基本介绍

    scala中的Map和java类似,也是一个散列表,它存储的内容也是键值对,scala中不可变的map是有序的,可变的map是无序的,一般都是用可变的scala.collection.motable.Map

    构建Map

    1. 不可变map

    // 1.默认是不可变的
    // 2.key-value,支持Any
    // 3.在Map的底层,每对key-value是Tuple2
    val map01 = Map("zhangsan"->10, "lisi"->20)
    
    // 也可以写成这样
    val map02 = Map(("A", 10), ("lisi", 20))
    

    2. 可变的map

    // 1.可变的map
    // 2.意味着可以添加删除
    val map03 = mutable.Map("zhangsan"->10, "lisi"->20)
    

    3. 创建空的map

    // 创建一个空的map
    val map04 = new mutable.HashMap[String, Int]
    

    4. 对偶元组

    // 对偶元组
    val map05 = mutable.Map(("a", 10), ("b", "11"))
    

    取值

    方式一:map(key)

    // 取值
    // 如果key存在,则返回对应的值
    // 如果key不存在,则抛出异常【java.util.NoSuchElementException】
    val result = map05("a")
    

    方式二:map.get(key).get

    // 如果key存在,则会返回some(value),然后调用some(value).get就能取出
    // 如果key不存在,则会返回none
    val result02 = map05.get("a").get
    

    方式三:map.getOrElse()

    val result03 = map05.getOrElse("c", "。。。。")
    

    contain

    使用contain方法检查key是否存在

    // 如果key存在,返回true,否则返回false
    if(map05.contains("a")){
        println(map05("a"))
    }else
        println("不存在")
    }
    

    修改、添加、删除

    map是可变的,才能修改,否则报错
    如果key存在,则修改对应的值,key不存在,等于添加一个key-value

    添加单个元素

    val map05 = mutable.Map(("a", 10), ("b", "11"))
    // key存在,则更新
    map05("a") = 19
    
    // key不存在,则添加
    map05("c") = 100 
    
    // 如果key存在,则会覆盖
    map05 += ("a"-> 100)
        
    // 不存在,则会添加
    map05 += ("e"-> 101)
    
    // 添加多个元素
    map05 += ("f"-> 102, "g"->103)
    
    // 删除元素,可以写多个,如果key存在,则删除,如果可以不存在,也不会报错
    map05 -= ("f", "g")
    

    map的遍历

    // 第一种方式:取出k,v
    for((k,v) <- map05){
        println("k:"+k+"   "+"v:"+v)
    }
    
    // 第二种方式:取出key
    for (k <- map05.keys){
        println(k)
    }
    
    // 第二种方式:取出value
    for(v<-map05.values){
        println(v)
    }
    
    // 这样取出方式,类型是tuple2
    for(v<- map05){
        println(v._1+"  "+v._2)
    }
    

    相关文章

      网友评论

          本文标题:scala之map

          本文链接:https://www.haomeiwen.com/subject/sqdsactx.html