English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
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)
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
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
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:
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
Le tableau suivant liste les méthodes couramment utilisées dans Scala Map :
Numéro | Mé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 文档