Scala - 映射

映射分爲可變映射mutable.Map和不可變映射Map。scala

Map

定義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

經過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)
相關文章
相關標籤/搜索