Convertir lista a map en Scala
Este artículo le enseñará cómo convertir una lista en un map en Scala.
Lista y Map en Scala
Primero, veamos definiciones breves de Lista y Map.
-
Una lista es una colección de tipos similares de datos inmutables. Se utiliza para representar una lista enlazada en Scala.
Sintaxis:
list_name = List( element1, element2 , element3....)
Ejemplo:
val fruits = List("Orange", "Apple" , "Mango" )
-
Map en Scala es una colección de pares clave-valor. Las claves siempre son únicas, mientras que los valores pueden repetirse; son muy útiles para la recuperación de datos.
Los maps en Scala pueden ser inmutables o mutables, pero por defecto son inmutables.
Sintaxis:
map_name = Map(key1->value1, key2->value2, key3->value3 ....)
Ejemplo:
val marks = Map("tony" -> 30, "bruce" -> 20,"Iron Man" -> 50)
Convertir lista a map en Scala
Para convertir una lista en un map en Scala, usamos el método toMap
. Debemos recordar que un map contiene un par de valores, es decir, un par clave-valor, mientras que una lista contiene solo valores únicos.
Así que tenemos dos formas de hacerlo:
- Usando el método
zipWithIndex
para agregar índices como claves a la lista. - Fusionar dos listas considerando una como claves y la otra como valores.
el método zipWithIndex
en Scala
Usaremos el método zipWithIndex
y el método toMap
de Scala para agregar claves a la lista.
Sintaxis:
map_name = list_name.zipWithIndex.map{ case(k,v) => (v,)}.toMap
Código de ejemplo:
object myClass {
def main(args: Array[String]) {
val fruits = List("Apple", "Orange" , "Watermelon" , "Mango")
val map = fruits.zipWithIndex.map{ case (k,v) => (v,k) }.toMap
println("The values of map : "+ map)
}
}
Producción :
The values of map : Map(0 -> Apple, 1 -> Orange, 2 -> Watermelon, 3 -> Mango)
En el código anterior, hemos creado una lista de frutas
que contienen los nombres de diferentes frutas. Tenemos el método toMap
para convertir la lista al map.
La lista contiene solo valores únicos; hemos utilizado el método zipWithIndex
para agregar valores de índice como claves, comenzando desde 0 a cada elemento de la lista.
Combinar dos listas para convertir lista en map en Scala
Podemos fusionar dos listas para crear un map; aquí, usamos una lista como claves y la otra como valores al final, creando pares clave-valor para el map.
Algunos puntos a tener en cuenta al fusionar dos listas son:
- La lista que estamos usando como clave debe tener elementos únicos. Si los elementos son únicos, entonces se considerará el último elemento.
- Ambas listas deben tener el mismo número de elementos; un valor debe estar presente para cada clave. Si ese no es el caso, se ignorarán los elementos sobrantes de la lista.
Sintaxis:
val map_name = (list_1 zip list_2).toMap
Código de ejemplo:
object myClass {
def main(args: Array[String]) {
val names = List("Tony", "Bruce" , "Strange" , "Iron Man")
val marks = List(33 ,56 ,89 ,99)
val result = (names zip marks).toMap
println("The values of map : "+ result)
}
}
Producción :
The values of map : Map(Tony -> 33, Bruce -> 56, Strange -> 89, Iron Man -> 99)
Tenemos dos listas, names
y marks
en el código anterior. Hemos utilizado el método toMap
para convertir una lista en un map, la lista names
se utiliza como clave y la lista marks
se utiliza como valor, y las hemos fusionado usando zip
y almacenado el resultado map en el map result
.