11.13. Choosing a Map Implementation
Problem
You need to choose a map class for a particular problem.
Solution
Scala has a wealth of map types to choose from, and you can even use Java map classes.
If you’re looking for a basic map class, where sorting or
insertion order doesn’t matter, you can either choose the default,
immutable Map
, or import the mutable
Map
, as shown in the previous
recipe.
If you want a map that returns its elements in sorted order by
keys, use a SortedMap
:
scala>import scala.collection.SortedMap
import scala.collection.SortedMap scala>val grades = SortedMap("Kim" -> 90,
|"Al" -> 85,
|"Melissa" -> 95,
|"Emily" -> 91,
|"Hannah" -> 92
|)
grades: scala.collection.SortedMap[String,Int] = Map(Al -> 85, Emily -> 91, Hannah -> 92, Kim -> 90, Melissa -> 95)
If you want a map that remembers the insertion order of its
elements, use a LinkedHashMap
or
ListMap
. Scala only has a
mutable LinkedHashMap
, and it returns its elements in
the order you inserted them:
scala>import scala.collection.mutable.LinkedHashMap
import scala.collection.mutable.LinkedHashMap scala>var states = LinkedHashMap("IL" -> "Illinois")
states: scala.collection.mutable.LinkedHashMap[String,String] = Map(IL -> Illinois) scala>states += ("KY" -> "Kentucky")
res0: scala.collection.mutable.LinkedHashMap[String,String] = Map(IL -> Illinois, KY -> Kentucky) scala>states += ("TX" -> "Texas")
res1: scala.collection.mutable.LinkedHashMap[String,String] = Map(IL -> Illinois, KY -> Kentucky, TX -> Texas)
Get Scala Cookbook now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.