地圖集 Cheatsheet
請注意,這涉及建立
Map
型別的集合,這與map
方法不同。
地圖創作
Map[String, Int]()
val m1: Map[String, Int] = Map()
val m2: String Map Int = Map()
對於大多數操作,對映可以被認為是 tuples
的集合,其中第一個元素是鍵,第二個元素是值。
val l = List(("a", 1), ("b", 2), ("c", 3))
val m = l.toMap // Map(a -> 1, b -> 2, c -> 3)
獲取元素
val m = Map("a" -> 1, "b" -> 2, "c" -> 3)
m.get("a") // Some(1)
m.get("d") // None
m("a") // 1
m("d") // java.util.NoSuchElementException: key not found: d
m.keys // Set(a, b, c)
m.values // MapLike(1, 2, 3)
新增元素
Map("a" -> 1, "b" -> 2) + ("c" -> 3) // Map(a -> 1, b -> 2, c -> 3)
Map("a" -> 1, "b" -> 2) + ("a" -> 3) // Map(a -> 3, b -> 2)
Map("a" -> 1, "b" -> 2) ++ Map("b" -> 3, "c" -> 4) // Map(a -> 1, b -> 3, c -> 4)
常見的操作
在地圖上的迭代發生的操作(map
,find
,forEach
等)中,集合的元素是 tuples
。函式引數可以使用元組訪問器(_1
,_2
),也可以使用帶有 case 塊的部分函式:
m.find(_._1 == "a") // Some((a,1))
m.map {
case (key, value) => (value, key)
} // Map(1 -> a, 2 -> b, 3 -> c)
m.filter(_._2 == 2) // Map(b -> 2)
m.foldLeft(0){
case (acc, (key, value: Int)) => acc + value
} // 6