scala (6) Map


在scala中Map分為可變長(mutable)和不可變長(imtable)

     /**
      * 不可變長map 長度一旦初始化,就不能在進行更改
      */
    // 通過對偶元組的方式創建map
    val map = Map("name" -> "leo", "age" -> 16, "sex" -> "男")

    // 通過箭頭的方式創建map
    val map1 = Map(("name", "jack"), ("age", 16), ("sex", "女"))

    // 通過兩者混搭創建map
    val map3 = Map("name" -> "tuoni", ("name", "hengr"))

    // ++ 操作合並兩個map 原map不變
    val newmap = map ++ map1

    println(map + "," + map1 + "," + map3 + "," + newmap)
   /**
      * 不可變長Map映射,長度,值一旦初始化后不能再次被改變
      */
    val map4 = mutable.Map("a" -> "A")
    map4.put("b", "B")
    map4 += ("c" -> "C", "d" -> "D")
    map4 ++= mutable.Map("hah" -> "HAH", ("a", "b"))
    // 移除Map映射,mutable 包下
    println(map4)
    map4 -= ("b", "B")
    map4 --= Set("a", "b")
    map4.remove("c")
    println(map4)

    // Map(b -> B, hah -> HAH, d -> D, a -> b, c -> C)
    // Map(hah -> HAH, d -> D)
/**
      * map映射常用操作方法
      */
    // contains 方法判斷一個key 是否存在,存在返回true,否則返回false
    val map = mutable.Map("b" -> "B", "hah" -> "HAH", "d" -> "D", "a" -> "b", "c" -> "C")
    println(map.contains("b"))

    //獲取key對應的值,注意如果通過 Map(“key”)獲取對應的值應該進行key是否存在判斷
    if (map.contains("e")) {
      println(map("e"))
    }
    // 映射的get 方法也是用來獲取key 對應的值,但是這個方法返回的是一個option對象,這個option
    // 對象有兩個子類,如果有key 則返回Some(some對象中封裝了key對應的值,可以通過some的get
    // 方法獲取該值)對象。
    // 沒有key則返回None對象

    val value: Option[String] = map.get("a")
    //isEmpty方法可以用來判斷是Some對象還是None
    if (!value.isEmpty) {
      println(value)
    } else {
      println(value)
    }
  // 如果key 存在則返回對應的值,如果key不存在則返回給定的值
  val v1 = map.getOrElse("f","EEE")
  println(v1)
 
        
/**
      * LinkedHashMap 插入有序,會按照我們的插入順序排序,因為底層是鏈表結構
      */
    val map5 = mutable.LinkedHashMap[String, String]()
    map5 += ("d" -> "D")
    map5 += (("a", "A"))
    map5("c") = "C"
    map5("b") = "B"
    println(map5)

    /**
      * SortedMap 可以自動對Map的key進行排序
      */
    val map6 = mutable.SortedMap[String, String]()
    map6("c") = "C"
    map6("b") = "B"
    map6("a") = "A"
    println(map6)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM