Convertir lista a map en Scala

Suraj P 13 junio 2022
  1. Lista y Map en Scala
  2. Convertir lista a map en Scala
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.

  1. 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" )
    
  2. 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:

  1. Usando el método zipWithIndex para agregar índices como claves a la lista.
  2. 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:

  1. La lista que estamos usando como clave debe tener elementos únicos. Si los elementos son únicos, entonces se considerará el último elemento.
  2. 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.

Autor: Suraj P
Suraj P avatar Suraj P avatar

A technophile and a Big Data developer by passion. Loves developing advance C++ and Java applications in free time works as SME at Chegg where I help students with there doubts and assignments in the field of Computer Science.

LinkedIn GitHub

Artículo relacionado - Scala List