English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Scala Map (mappage)

Scala 集合

Map (mappage) est un ensemble itérable de paires clé-valeur (key/structure de valeur).

Tous les valeurs peuvent être obtenus par le biais des clés.

Les clés dans les Maps sont uniques.

Les Maps sont également appelées tables de hachage (Hash tables).

Les Maps ont deux types, mutables et immuables, la différence réside dans le fait que les objets mutables peuvent être modifiés, tandis que les objets immuables ne peuvent pas.

Par défaut, Scala utilise des Maps immuables. Si vous avez besoin d'utiliser des collections mutables, vous devez explicitement les importer. import scala.collection.mutable.Map

在 Scala 中 你可以同时使用可变与不可变 Map,不可变的直接使用 Map,可变的使用 mutable.Map。以下示例演示了不可变 Map 的应用:

// 空哈希表,键为字符串,值为整型
var A:Map[Char,Int] = Map()
// Map 键值对演示
val colors = Map("red" -> "#FF0000", "azure" -> "#F0FFFF")

定义 Map 时,需要为键值对定义类型。如果需要添加 key-value 对,可以使用 + 号,如下所示:

A += ('I' -> 1en tant que méthode
A += ('J' -> 5en tant que méthode
A += ('K' -> 10en tant que méthode
A += ('L' -> 100)

Map 基本操作

Scala Map 有三个基本操作:

方法描述
keys返回 Map 所有的键(key)
values返回 Map 所有的值(value)
isEmpty在 Map 为空时返回true

在线示例

以下示例演示了以上三个方法的基本应用:

Exemple
   object Test {
      val colors = Map("red" -> "#FF0000",
                       "azure" -> "#F0FFFF",
                       "peru" -> "#CD853F)
      val nums: Map[Int, Int] = Map()
      println( "colors 中的键为 : " + colors.keys )
      println( "colors 中的值为 : " + colors.values )
      println( "检测 colors 是否为空 : " + colors.isEmpty )
      println( "检测 nums 是否为空 : " + nums.isEmpty )
   }
}

Exécuter le code suivant, le résultat de la sortie est :

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

Map 合并

vérifier si une clé spécifique existe dans la Map ++ 运算符或 Map.++() 方法来连接两个 Map,Map 合并时会移除重复的 key。以下演示了两个 Map 合并的示例:

Exemple
   object Test {
      val colors1 = Map("red" -> "#FF0000",
                        "azure" -> "#F0FFFF",
                        "peru" -> "#CD853F)
      val colors2 = Map("blue" -> "#0033val couleurs
                        = Map("bleu" -> "#00"
                        "jaune" -> "#FFFF00",
      //  ++ "rouge"
      > "#FF0000"1 ++ couleurs )2
      couleurs = couleurs1 ++ couleurs )2 en tant que opérateur + println(" couleurs")
      //  ++ var couleurs = couleurs
      : ""1: Map(bleu++couleurs2en tant que méthode
      couleurs = couleurs1: Map(bleu++couleurs2) + println(" couleurs")
   }
}

Exécuter le code suivant, le résultat de la sortie est :

$ scalac Test.scala 
$ scala Test
couleurs )1 ++ couleurs )2 ) : "" -(couleurs33) : Map(bleu -> #00 -> #F0FFFF, peru853> #CD -> F, jaune -> #FFFF00, rouge
couleurs )1: Map(bleu++couleurs2. -(couleurs33) : Map(bleu -> #00 -> #F0FFFF, peru853> #CD -> F, jaune -> #FFFF00, rouge

> #FF0000

Output des keys et values de la Map

Exemple
   object Test {
      def main(args: Array[String]) {3val sites = Map("w" -"taobao"//www.w3"codebox"
                       "codebox.com", -"taobao"//"baidu"
                       www.baidu.com", -"taobao"//> "http:
      Voici l'output des keys et values de la Map via un foreach :  
                           sites.keys.foreach{i => + print("Clé = ")
                           i ) + println(" Valeur = ")
   }
}

Exécuter le code suivant, le résultat de la sortie est :

$ scalac Test.scala 
$ scala Test
sites(i)3Clé = w//fr.oldtoolbag.com
Clé = codebox Valeur = http://www.baidu.com
Clé = baidu Valeur = http://Clé = taobao Valeur = http:

www.taobao.com

vérifier si une clé spécifique existe dans la Map Vous pouvez utiliser Map.contains

Exemple
   object Test {
      def main(args: Array[String]) {3val sites = Map("w" -"taobao"//www.w3"codebox"
                       "codebox.com", -"taobao"//"baidu"
                       www.baidu.com", -"taobao"//> "http:
      www.taobao.com3if(sites.contains("w")){
           println("w"3sites("w")){  + println("La clé 'codebox' existe, la valeur correspondante est :")3sites("w"))
      }
           println("w"3println("La clé 'codebox' n'existe pas")
      }
      if(sites.contains("baidu")){
           println("La clé 'baidu' existe, la valeur correspondante est :")  + sites("baidu")
      }
           println("La clé 'baidu' n'existe pas")
      }
      if( sites.contains( "google" )){
           println("Clé google existante, la valeur correspondante est :"  + sites("google"))
      }
           println("Clé google non trouvée")
      }
   }
}

Exécuter le code suivant, le résultat de la sortie est :

$ scalac Test.scala 
$ scala Test
w3Clé codebox existante, la valeur correspondante est :http://fr.oldtoolbag.com
Clé baidu existante, la valeur correspondante est :http://www.baidu.com
Clé google non trouvée

Méthodes de Scala Map

Le tableau suivant liste les méthodes couramment utilisées dans Scala Map :

NuméroMéthode et description
1

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

Retourne une nouvelle Map, composée de la Map xs nouvelle

2

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

Retourne une nouvelle Map, supprime la clé elem1, elem2 ou d'autres elems.

3

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

Retourne une nouvelle Map, supprime la clé correspondante dans l'objet xs

4

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

Retourne la valeur de la clé spécifiée

5

def iterator: Iterator[(A, B)]

Créer un nouveau itérateur et afficher la clé/value pair

6

def addString(b: StringBuilder): StringBuilder

Ajouter tous les éléments de la Map à StringBuilder, peut inclure un séparateur

7

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

Ajouter tous les éléments de la Map à StringBuilder, peut inclure un séparateur

8

def apply(key: A): B

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

9

def clear(): Unit

Vider la Map

10

def clone(): Map[A, B]

Copier d'une Map à une autre Map

11

def contains(key: A): Boolean

Si la Map contient la clé spécifiée, retourne true, sinon retourne false.

12

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

Copie le ensemble dans un tableau.

13

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

Calculer le nombre d'éléments qui satisfont la condition spécifiée dans le ensemble.

14

def default(key: A): B

Définir la valeur par défaut du Map, retourne cette valeur lorsque la clé n'existe pas.

15

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

Retourne un nouveau ensemble après avoir retiré les n premiers éléments.

16

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

Retourne un nouveau ensemble après avoir retiré les derniers n éléments.

17

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

Retire les éléments de gauche à droite jusqu'à ce que la condition p ne soit plus vraie.

18

def empty: Map[A, B]

Retourne une Map vide de type identique.

19

def equals(that: Any): Boolean

Si deux Map sont égales (key/Retourne true si toutes les valeurs sont égales, sinon retourne false.

20

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

Juger si l'élément qui satisfait la condition spécifiée existe dans le ensemble.

21

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

Retourne tous les ensembles qui satisfont la condition spécifiée.

22

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

Retourne un Map immutable qui satisfait la condition spécifiée.

23

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

Trouver le premier élément qui satisfait la condition spécifiée dans le ensemble.

24

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

Applique la fonction à tous les éléments du ensemble.

25

def init: Map[A, B]

Retourne tous les éléments, sauf le dernier.

26

def isEmpty: Boolean

Vérifie si la Map est vide.

27

def keys: Iterable[A]

Retourne toutes les clés./p>

28

def last: (A, B)

Retourne l'élément dernier.

29

def max: (A, B)

Trouver l'élément le plus grand.

30

def min: (A, B)

Trouver l'élément le plus petit.

31

def mkString: String

Affiche tous les éléments du ensemble sous forme de chaîne.

32

def product: (A, B)

Retourne le produit des éléments numériques du ensemble.

33

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

移除指定 key

34

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

如果符合满足条件的返回 true

35

def size: Int

返回 Map 元素的个数

36

def sum: (A, B)

返回集合中所有数字元素之和

37

def tail: Map[A, B]

返回一个集合中除了第一元素之外的其他元素

38

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

返回前 n 个元素

39

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

返回后 n 个元素

40

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

返回满足指定条件的元素

41

def toArray: Array[(A, B)]

集合转数组

42

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

返回缓冲区,包含了 Map 的所有元素

43

def toList: List[A]

返回 List,包含了 Map 的所有元素

44

def toSeq: Seq[A]

返回 Seq,包含了 Map 的所有元素

45

def toSet: Set[A]

返回 Set,包含了 Map 的所有元素

46

def toString(): String

返回字符串对象

更多方法可以参考 API 文档

Scala 集合