Convertir une liste en map en Scala
Cet article vous apprendra comment convertir une liste en map dans Scala.
Liste et map en Scala
Examinons d’abord les brèves définitions de List et Map.
-
Une liste est une collection de types similaires de données immuables. Il est utilisé pour représenter une liste chaînée dans Scala.
Syntaxe:
list_name = List( element1, element2 , element3....)
Exemple:
val fruits = List("Orange", "Apple" , "Mango" )
-
Map in Scala est une collection de paires clé-valeur. Les clés sont toujours uniques, tandis que les valeurs peuvent être répétées ; ils sont très utiles pour la récupération de données.
Les maps dans Scala peuvent être immuables ou modifiables, mais par défaut, elles sont immuables.
Syntaxe:
map_name = Map(key1->value1, key2->value2, key3->value3 ....)
Exemple:
val marks = Map("tony" -> 30, "bruce" -> 20,"Iron Man" -> 50)
Convertir une liste en map en Scala
Pour convertir une liste en map en Scala, on utilise la méthode toMap
. Nous devons nous rappeler qu’une map contient une paire de valeurs, c’est-à-dire une paire clé-valeur, alors qu’une liste ne contient que des valeurs uniques.
Nous avons donc deux façons de le faire :
- Utiliser la méthode
zipWithIndex
pour ajouter des index comme clés à la liste. - Fusionner deux listes en considérant l’une comme clé et l’autre comme valeur.
la méthode zipWithIndex
dans Scala
Nous utiliserons la méthode zipWithIndex
et la méthode toMap
de Scala pour ajouter des clés à la liste.
Syntaxe:
map_name = list_name.zipWithIndex.map{ case(k,v) => (v,)}.toMap
Exemple de code :
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)
}
}
Production:
The values of map : Map(0 -> Apple, 1 -> Orange, 2 -> Watermelon, 3 -> Mango)
Dans le code ci-dessus, nous avons créé une liste de fruits
contenant les noms de différents fruits. Nous avons la méthode toMap
pour convertir la liste en map.
La liste ne contient que des valeurs uniques ; nous avons utilisé la méthode zipWithIndex
pour ajouter des valeurs d’index en tant que clés, en commençant par 0 à chaque élément de la liste.
Fusionner deux listes pour convertir la liste en map dans Scala
Nous pouvons fusionner deux listes pour créer une map ; ici, nous utilisons une liste comme clés et l’autre comme valeurs à la fin, créant des paires clé-valeur pour la map.
Voici quelques points à garder à l’esprit lors de la fusion de deux listes :
- La liste que nous utilisons comme clé doit avoir des éléments uniques. Si les éléments sont uniques, le dernier élément sera pris en compte.
- Les deux listes doivent avoir un nombre égal d’éléments ; une valeur doit être présente pour chaque clé. Si ce n’est pas le cas, alors les éléments excédentaires de la liste seront ignorés.
Syntaxe:
val map_name = (list_1 zip list_2).toMap
Exemple de code :
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)
}
}
Production:
The values of map : Map(Tony -> 33, Bruce -> 56, Strange -> 89, Iron Man -> 99)
Nous avons deux listes, names
et marks
dans le code ci-dessus. Nous avons utilisé la méthode toMap
pour convertir une liste en map, la liste names
est utilisée comme clé et la liste marks
est utilisée comme valeur, et nous les avons fusionnées en utilisant zip
et stocké le résultat map dans la map result
.