映射分爲可變映射mutable.Map和不可變映射Map。scala
定義Map,經過 ->
符合鏈接鍵值對。code
// 定義 val map = Map("a" -> 1, "b" -> 2, "c" -> 3) println(map) // Map(a -> 1, b -> 2, c -> 3)
讀取元素,經過get的話,當有值的時候,獲得Some,沒有值的話,獲得None。
因爲是Some,須要再加一個get才能夠獲取具體的值,也能夠經過(key)獲得具體的值。
若是不肯定值是否存在,能夠用getOrElse方法,後面帶默認值,沒有對應的值的話,就返回這個默認值。rem
// 讀取 println(map.get("a")) // Some(1) println(map.get("a").get) // 1 println(map("a")) // 1 println(map.get("d")) // None println(map.getOrElse("d", 0)) // 0
循環遍歷:
能夠直接打印每一個鍵值對,也能夠在循環裏經過_1,_2獲取鍵值對。
能夠經過keys獲取鍵集合,也能夠經過values獲取值集合get
map.foreach(println) // (a,1) (b,2) (c,3) map.foreach(e => println(e))// (a,1) (b,2) (c,3) map.foreach(e => { println(e._1 + "->" + e._2) // a->1 b->2 c->3 }) map.keys.foreach(println) // a b c map.values.foreach(println) // 1 2 3
經過mutable.Map來定義table
val map = mutable.Map("a" -> 1, "b" -> 2, "c" -> 3) println(map) // Map(b -> 2, a -> 1, c -> 3)
讀取和循環遍歷和上面同樣,不作累述。
賦值:class
map.+=("d" -> 4) // 等同map += ("d" -> 4) println(map) // Map(b -> 2, d -> 4, a -> 1, c -> 3) map("e") = 5 println(map) // Map(e -> 5, b -> 2, d -> 4, a -> 1, c -> 3) map.put("f", 6) println(map) // Map(e -> 5, b -> 2, d -> 4, a -> 1, c -> 3, f -> 6) map.update("g", 7) // 不存在則新增 println(map) // Map(e -> 5, b -> 2, d -> 4, a -> 1, c -> 3, f -> 6)
刪除:date
map -= "g" println(map) // Map(e -> 5, b -> 2, d -> 4, a -> 1, c -> 3, f -> 6) map.remove("f") println(map) // Map(e -> 5, b -> 2, d -> 4, a -> 1, c -> 3)