Immutable map: val scores = Map("Alice" -> 10, "Bob" -> 3).
Mutable map: val scores = scala.collection.mutable.Map("Alice" -> 10, "Bob" -> 3).
Maps are implemented as hash tables.
SortedMap is an immutable tree map.
Map is a collection of pairs. A pair is a group of two values. -> operator makes a pair so the value of "Alice" -> 10 is ("Alice", 10). So map can be defined as val scores = Map(("Alice", 10), ("Bob", 3)), too.
Get value from map
val bobScore = scores("Bob"). It will throw exception if key "bob" does not exist.
val bobScore = scores.get("Bob") returns an Option that can be None if key "bob" does not exist.
scores.contains("Bob") checks if Bob is in the map key.
scores.getOrElse("Bob", 0) returns value of Bob if found, 0 otherwise.
Update Map
scores("Fred") = 7. Only works on a mutable map.
Add multiple associations or update: scores += ("Bob" -> 10, "Fred" -> 7).
Remove an association: scores -= "Alice". Only remove the key.
You can create a new Map by modifying and immutable map using + (add or update) and -. Or make scores a var so that the new Map can be assigned to scores. Then += and -= can be used. It is NOT inefficient to use immutable map this way.
map -- map2 remove occurrences in map2 from map.
Map Iteration
for ((k, v) <- scores) process k and v
scores.keySet returns a Set of keys.
scores.keys and scores.values returns an Iterable that can be used in for loop.