映射分为可变映射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)