Scala Map

Scala 集合Collections Scala

Une Map est une structure clé/valeur itérable.

Toutes les valeurs peuvent être obtenues via les clés.

Les clés dans une Map sont uniques.

Une Map est aussi appelée table de hachage.

Map a deux types : mutable et immuable. La différence est que les objets mutables peuvent être modifiés, tandis que les objets immuables ne peuvent pas l'être.

Par défaut, Scala utilise une Map immuable. Si vous devez utiliser une collection mutable, vous devez explicitement importerimport scala.collection.mutable.MapClasse

En Scala, vous pouvez utiliser à la fois des Maps mutables et immuables. Pour les immuables, utilisez directement Map ; pour les mutables, utilisez mutable.Map. L'exemple suivant illustre l'application d'une Map immuable :

// 空哈希表,键为字符串,值为整型
var A:Map[Char,Int] = Map()

// Map 键值对演示
val colors = Map("red" -> "#FF0000", "azure" -> "#F0FFFF")

Lors de la définition d'une Map, vous devez définir les types des paires clé-valeur. Si vous devez ajouter des paires clé-valeur, vous pouvez utiliser le signe +, comme indiqué ci-dessous :

A += ('I' -> 1)
A += ('J' -> 5)
A += ('K' -> 10)
A += ('L' -> 100)

Opérations de base sur les Map

La Map Scala a trois opérations de base :

Méthode Description
keys Renvoie toutes les clés de la Map
values Renvoie toutes les valeurs de la Map
isEmpty Renvoie true lorsque la Map est vide

Exemple

L'exemple suivant illustre l'application de base des trois méthodes ci-dessus :

Exemple

object Test {
   def main(args: Array[String]) {
      val colors = Map("red" -> "#FF0000",
                       "azure" -> "#F0FFFF",
                       "peru" -> "#CD853F")

      val nums: Map[Int, Int] = Map()

      println( "Les clés dans colors sont : " + colors.keys )
      println( "Les valeurs dans colors sont : " + colors.values )
      println( "Vérifier si colors est vide : " + colors.isEmpty )
      println( "Vérifier si nums est vide : " + nums.isEmpty )
   }
}

L'exécution du code ci-dessus produit la sortie suivante :

$ scalac Test.scala 
$ scala Test
colors 中的键为 : Set(red, azure, peru)
colors 中的值为 : MapLike(#FF0000, #F0FFFF, #CD853F)
检测 colors 是否为空 : false
检测 nums 是否为空 : true

Fusion de Map

Vous pouvez utiliser++l'opérateur ouMap.++()la méthode pour concaténer deux Maps. Lorsque des Maps sont fusionnées, les clés en double sont supprimées. Ce qui suit montre un exemple de fusion de deux Maps :

Exemple

object Test {
   def main(args: Array[String]) {
      val colors1 = Map("red" -> "#FF0000",
                        "azure" -> "#F0FFFF",
                        "peru" -> "#CD853F")
      val colors2 = Map("blue" -> "#0033FF",
                        "yellow" -> "#FFFF00",
                        "red" -> "#FF0000")

      // ++ en tant qu'opérateur
      var colors = colors1 ++ colors2
      println( "colors1 ++ colors2 : " + colors )

      // ++ en tant que méthode
      colors = colors1.++(colors2)
      println( \"colors1.++(colors2) : \" + colors )

   }
}

L'exécution du code ci-dessus produit la sortie suivante :

$ scalac Test.scala 
$ scala Test
colors1 ++ colors2 : Map(blue -> #0033FF, azure -> #F0FFFF, peru -> #CD853F, yellow -> #FFFF00, red -> #FF0000)
colors1.++(colors2) : Map(blue -> #0033FF, azure -> #F0FFFF, peru -> #CD853F, yellow -> #FFFF00, red -> #FF0000)

Afficher les clés et les valeurs d'une Map

Ce qui suit utilise une boucle foreach pour afficher les clés et les valeurs dans une Map :

Exemple

object Test {
   def main(args: Array[String]) {
      val sites = Map(\"example\" -> \"http://www.example.com\",
                       \"baidu\" -> \"http://www.baidu.com\",
                       \"taobao\" -> \"http://www.taobao.com\")

      sites.keys.foreach{ i =>  
                           print( \"Clé = \" + i )
                           println(\" Valeur = \" + sites(i) )}
   }
}

L'exécution du code ci-dessus produit la sortie suivante :

$ scalac Test.scala 
$ scala Test
Key = example Value = http://www.example.com
Key = baidu Value = http://www.baidu.com
Key = taobao Value = http://www.taobao.com

Vérifier si une Map contient une clé spécifiée

Vous pouvez utiliser la méthodeMap.containspour vérifier si une clé spécifiée existe dans une Map. Exemple :

Exemple

object Test {
   def main(args: Array[String]) {
      val sites = Map(\"example\" -> \"http://www.example.com\",
                       \"baidu\" -> \"http://www.baidu.com\",
                       \"taobao\" -> \"http://www.taobao.com\")

      if( sites.contains( "example" )){
           println("la clé example existe, la valeur correspondante est :"  + sites("example"))
      }else{
           println("la clé example n'existe pas")
      }
      if( sites.contains( "baidu" )){
           println("la clé baidu existe, la valeur correspondante est :"  + sites("baidu"))
      }else{
           println("la clé baidu n'existe pas")
      }
      if( sites.contains( "google" )){
           println("la clé google existe, la valeur correspondante est :"  + sites("google"))
      }else{
           println("la clé google n'existe pas")
      }
   }
}

L'exécution du code ci-dessus produit la sortie suivante :

$ scalac Test.scala 
$ scala Test
example 键存在,对应的值为 :http://www.example.com
baidu 键存在,对应的值为 :http://www.baidu.com
google 键不存在

Méthodes de Map en Scala

Le tableau suivant répertorie les méthodes courantes de Map en Scala :

Non. Méthode et description
1

def ++(xs: Map[(A, B)]): Map[A, B]

Renvoie une nouvelle Map composée de la nouvelle Map xs

2

def -(elem1: A, elem2: A, elems: A*): Map[A, B]

Renvoie une nouvelle Map, en supprimant les clés elem1, elem2, ou d'autres elems.

3

def --(xs: GTO[A]): Map[A, B]

Renvoie une nouvelle Map, en supprimant les clés correspondantes dans l'objet xs.

4

def get(key: A): Option[B]

Renvoie la valeur pour la clé spécifiée

5

def iterator: Iterator[(A, B)]

Crée un nouvel itérateur et produit des paires clé/valeur

6

addString(b: StringBuilder): StringBuilder

Ajoute tous les éléments de la Map à un StringBuilder, avec un séparateur facultatif

7

def addString(b: StringBuilder, sep: String): StringBuilder

Ajoute tous les éléments de la Map à un StringBuilder, avec un séparateur facultatif

8

def apply(key: A): B

Renvoie la valeur pour la clé spécifiée, ou la méthode par défaut de la Map si elle n'existe pas

9

def clear(): Unit

Vide la Map

10

def clone(): Map[A, B]

Copie d'une Map vers une autre Map

11

def contains(key: A): Boolean

Renvoie true si la clé spécifiée existe dans la Map, sinon renvoie false.

12

def copyToArray(xs: Array[(A, B)]): Unit

Copie la collection dans un tableau

13

def count(p: ((A, B)) => Boolean): Int

Compte le nombre d'éléments de la collection qui satisfont la condition spécifiée

14

def default(key: A): B

Définit la valeur par défaut de la Map, renvoyée lorsque la clé n'existe pas.

15

def drop(n: Int): Map[A, B]

Renvoie une nouvelle collection après avoir supprimé les n premiers éléments

16

def dropRight(n: Int): Map[A, B]

Renvoie une nouvelle collection après avoir supprimé les n derniers éléments

17

def dropWhile(p: ((A, B)) => Boolean): Map[A, B]

Supprime des éléments de gauche à droite jusqu'à ce que la condition p soit fausse

18

def empty: Map[A, B]

Renvoie une Map vide du même type

19

def equals(that: Any): Boolean

Renvoie true si deux Maps sont égales (égalité des clés et des valeurs), sinon renvoie false

20

def exists(p: ((A, B)) => Boolean): Boolean

Détermine si un élément qui satisfait la condition spécifiée existe dans la collection

21

def filter(p: ((A, B))=> Boolean): Map[A, B]

Renvoie tous les éléments qui satisfont la condition spécifiée

22

def filterKeys(p: (A) => Boolean): Map[A, B]

Renvoie une Map immuable qui satisfait la condition spécifiée

23

def find(p: ((A, B)) => Boolean): Option[(A, B)]

Trouve le premier élément de la collection qui satisfait la condition spécifiée

24

def foreach(f: ((A, B)) => Unit): Unit

Applique une fonction à tous les éléments de la collection

25

def init: Map[A, B]

Renvoie tous les éléments sauf le dernier

26

def isEmpty: Boolean

Vérifie si la Map est vide

27

def keys: Iterable[A]

Renvoie toutes les clés

28

def last: (A, B)

Renvoie le dernier élément

29

def max: (A, B)

Trouve le plus grand élément

30

def min: (A, B)

Trouve le plus petit élément

31

def mkString: String

Affiche tous les éléments de la collection sous forme de chaîne

32

def product: (A, B)

Renvoie le produit des éléments numériques de la collection.

33

def remove(key: A): Option[B]

Supprime la clé spécifiée

34

def retain(p: (A, B) => Boolean): Map.this.type

Renvoie true si la condition est remplie

35

def size: Int

Renvoie le nombre d'éléments dans le Map

36

def sum: (A, B)

Renvoie la somme de tous les éléments numériques de la collection

37

def tail: Map[A, B]

Renvoie tous les éléments d'une collection sauf le premier élément

38

def take(n: Int): Map[A, B]

Renvoie les n premiers éléments

39

def takeRight(n: Int): Map[A, B]

Renvoie les n derniers éléments

40

def takeWhile(p: ((A, B)) => Boolean): Map[A, B]

Renvoie les éléments qui satisfont la condition spécifiée

41

def toArray: Array[(A, B)]

Convertit la collection en tableau

42

def toBuffer[B >: A]: Buffer[B]

Renvoie un tampon contenant tous les éléments de la Map

43

def toList: List[A]

Renvoie une List contenant tous les éléments de la Map

44

def toSeq: Seq[A]

Retourne une Seq contenant tous les éléments de la Map

45

def toSet: Set[A]

Retourne un Set contenant tous les éléments de la Map

46

def toString(): String

Retourne un objet chaîne de caractères

Pour plus de méthodes, reportez-vous à ladocumentation de l'API

Scala 集合Collections Scala

Autres extensions