映射分为可变映射mutable.Map和不可变映射Map。

Map

定义Map,通过 -> 合乎连贯键值对。

 // 定义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办法,前面带默认值,没有对应的值的话,就返回这个默认值。

// 读取println(map.get("a")) // Some(1)println(map.get("a").get) // 1println(map("a")) // 1println(map.get("d")) // Noneprintln(map.getOrElse("d", 0)) // 0

循环遍历:
能够间接打印每个键值对,也能够在循环里通过_1,_2获取键值对。
能够通过keys获取键汇合,也能够通过values获取值汇合

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 cmap.values.foreach(println) // 1 2 3

mutable.Map

通过mutable.Map来定义

val map = mutable.Map("a" -> 1, "b" -> 2, "c" -> 3)println(map) // Map(b -> 2, a -> 1, c -> 3)

读取和循环遍历和下面一样,不做累述。
赋值:

map.+=("d" -> 4) // 等同map += ("d" -> 4)println(map) // Map(b -> 2, d -> 4, a -> 1, c -> 3)map("e") = 5println(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)

删除:

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)