Map

Los map son asociaciones llave, valor, donde la llave es unica y esta asociada a un valor, es similar a los arreglos o vectores solamente que la busqueda no se hace por indice sino por la llave (diferente tipo)

scala> val map1 = Map("Colombia" -> "Bogota", "Peru" -> "Lima", "Venezuela"
-> "Caracas", "Brazil" -> "Brasilia", "Mexico" -> "DF")
val map1: scala.collection.immutable.Map[String,String] = HashMap(Venezuela -> Caracas, Mexico -> DF, Peru -> Lima, Brazil -> Brasilia, Colombia -> Bogota)

scala> val map2 = Map(10 -> "Lunes", 11 -> "Martes", 12 -> "Miercoles", 12 -> "Jueves")
val map2: scala.collection.immutable.Map[Int,String] = Map(10 -> Lunes, 11 -> Martes, 12 -> Jueves)

En caso que una llave se repita se sobreescribe el valor.

scala> map1("Colombia")
val res1: String = Bogota

scala> map1("Argentina")
java.util.NoSuchElementException: key not found: Argentina
  at scala.collection.immutable.BitmapIndexedMapNode.apply(HashMap.scala:670)
  at scala.collection.immutable.HashMap.apply(HashMap.scala:132)
  ... 34 elided

En caso que una llave no exista se retorna un mensaje de error

scala> val map1 = Map("Colombia" -> "Bogota", "Peru" -> "Lima", "Venezuela"
-> "Caracas", "Brazil" -> "Brasilia", "Mexico" -> "DF") withDefaultValue "No esta"
val map1: scala.collection.immutable.Map[String,String] = Map(Venezuela -> Caracas, Mexico -> DF, Peru -> Lima, Brazil -> Brasilia, Colombia -> Bogota)

scala> map1("Argentina")
val res4: String = No esta

Con withDefaultValue evitan el error

scala> map1.toList
val res6: List[(String, String)] = List((Venezuela,Caracas), (Mexico,DF), (Peru,Lima), (Brazil,Brasilia), (Colombia,Bogota))

scala> map2.toArray
val res7: Array[(Int, String)] = Array((10,Lunes), (11,Martes), (12,Jueves))

scala> List((1,1),(2,2),(3,3)).toMap
val res9: scala.collection.immutable.Map[Int,Int] = Map(1 -> 1, 2 -> 2, 3 -> 3)

Podemos obtener las llaves, los valores o los pares separados asi:

scala> map1.values
val res10: Iterable[String] = Iterable(Caracas, DF, Lima, Brasilia, Bogota)

scala> map1.keys
val res11: Iterable[String] = Set(Venezuela, Mexico, Peru, Brazil, Colombia)

scala> val (x,y) = (map1.keys, map1.values)
val x: Iterable[String] = Set(Venezuela, Mexico, Peru, Brazil, Colombia)
val y: Iterable[String] = Iterable(Caracas, DF, Lima, Brasilia, Bogota)