Scala Carte (carte)
Carte (carte) est une sorte de paires clé-valeur itératives (clé / valeur) structure.
Toutes les valeurs peuvent être récupérées par une clé.
Carte de la clé est unique.
La carte est aussi appelée une table de hachage (tables de hachage).
Carte Il existe deux types de variables et ne peuvent être modifiés, à l'exception que l'objet variable peut modifier sans objets mutables ne peut pas.
Par défaut, Scala immuable carte. Si vous avez besoin d'utiliser une collection variable, vous devez introduire explicitement classescala.collection.mutable.Map d'importation
En Scala vous pouvez utiliser la carte variable et immuable, l'utilisation directe Carte immuable, mutable utilisation mutable.Map. L'exemple suivant illustre l'application de l'immuable Carte:
// 空哈希表,键为字符串,值为整型 var A:Map[Char,Int] = Map() // Map 键值对演示 val colors = Map("red" -> "#FF0000", "azure" -> "#F0FFFF")
Lorsque vous définissez une carte, vous devez définir le type de paires clé-valeur. Si vous devez ajouter des paires clé-valeur, vous pouvez utiliser le signe +, comme suit:
A += ('I' -> 1) A += ('J' -> 5) A += ('K' -> 10) A += ('L' -> 100)
Opérations Carte de base
Scala Carte Il y a trois opérations de base:
manière | description |
---|---|
clés | Retour Carte toutes les clés (clés) |
valeurs | Carte Renvoie toutes les valeurs (valeur) |
isEmpty | Dans la carte est vide vrai retour |
Exemples
L'exemple suivant illustre l'application des trois méthodes de base ci-dessus:
object Test { def main(args: Array[String]) { 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 ) } }
Mise en œuvre du code ci-dessus, la sortie est:
$ scalac Test.scala $ scala Test colors 中的键为 : Set(red, azure, peru) colors 中的值为 : MapLike(#FF0000, #F0FFFF, #CD853F) 检测 colors 是否为空 : false 检测 nums 是否为空 : true
Plan fusion
Vous pouvez utiliser l'opérateur++ ou Carte. ++ ()Méthode pour connecter deux Map, supprime la clé en double lorsque la carte de fusion. Les deux exemples suivants démontrent la carte combinée:
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") // ++ 作为运算符 var colors = colors1 ++ colors2 println( "colors1 ++ colors2 : " + colors ) // ++ 作为方法 colors = colors1.++(colors2) println( "colors1.++(colors2)) : " + colors ) } }
Mise en œuvre du code ci-dessus, la sortie est:
$ 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)
Carte des clés et des valeurs de sortie
La boucle foreach suivante via la sortie Carte des clés et des valeurs:
object Test { def main(args: Array[String]) { val sites = Map("w3big" -> "http://www.w3big.com", "baidu" -> "http://www.baidu.com", "taobao" -> "http://www.taobao.com") sites.keys.foreach{ i => print( "Key = " + i ) println(" Value = " + sites(i) )} } }
Mise en œuvre du code ci-dessus, la sortie est:
$ scalac Test.scala $ scala Test Key = w3big Value = http://www.w3big.com Key = baidu Value = http://www.baidu.com Key = taobao Value = http://www.taobao.com
Vérifiez si la clé spécifiée existe dans la carte
Vous pouvez utiliser la méthodeMap.contains pour voir si la présence de la carte clé spécifiée.Des exemples sont les suivants:
object Test { def main(args: Array[String]) { val sites = Map("w3big" -> "http://www.w3big.com", "baidu" -> "http://www.baidu.com", "taobao" -> "http://www.taobao.com") if( sites.contains( "w3big" )){ println("w3big 键存在,对应的值为 :" + sites("w3big")) }else{ println("w3big 键不存在") } if( sites.contains( "baidu" )){ println("baidu 键存在,对应的值为 :" + sites("baidu")) }else{ println("baidu 键不存在") } if( sites.contains( "google" )){ println("google 键存在,对应的值为 :" + sites("google")) }else{ println("google 键不存在") } } }
Mise en œuvre du code ci-dessus, la sortie est:
$ scalac Test.scala $ scala Test w3big 键存在,对应的值为 :http://www.w3big.com baidu 键存在,对应的值为 :http://www.baidu.com google 键不存在
Méthode Scala Carte
Le tableau suivant répertorie les méthodes couramment utilisées Scala Carte:
Non. | Méthode et description |
---|---|
1 | def ++ (xs: Carte [( A, B)]): Carte [A, B] Il retourne une nouvelle carte, nouvelle carte xs composition |
2 | def - (elem1: A, elem2 : A, elems: A *): Carte [A, B] Renvoie une nouvelle carte, retirez la clé de elem1, elem2 ou d'autres elems. |
3 | def - (xs: GTO [A ]): Carte [A, B] Renvoie une nouvelle carte, supprimer xs objet clé correspondante |
4 | obtenir def (clé: A): Option [B] Renvoie la valeur de la clé spécifiée |
5 | def iterator: Iterator [(A, B)] Créer une nouvelle iterator, et délivre la valeur paire clé / |
6 | def addString (b: StringBuilder): StringBuilder La carte de tous les éléments attachés à la StringBuilder, peuvent être ajoutés à un séparateur |
7 | def addString (b: StringBuilder, septembre : String): StringBuilder La carte de tous les éléments attachés à la StringBuilder, peuvent être ajoutés à un séparateur |
8 | appliquer def (clé: A): B Renvoie la valeur de la clé spécifiée, s'il n'y a pas de retour à la méthode par défaut Carte |
9 | def clear (): Unité Effacer la carte |
10 | def clone (): Carte [A , B] De l'un à l'autre Carte Plan |
11 | def contient (clé: A): Boolean S'il y a une clé Carte spécifiée, renvoie true, sinon retourne false. |
12 | def copyToArray (xs: Array [( A, B)]): Unité Copie réglé sur un tableau |
13 | compter def (p: ((A , B)) => Boolean): Int Calculer le nombre d'éléments qui répondent aux critères spécifiés définis |
14 | def défaut (clé: A): B La valeur par défaut est définie Carte des rendements lorsque la clé est absente. |
15 | def drop (n: Int): Carte [A, B] La nouvelle collection avant rejets n éléments de retour |
16 | def dropRight (n: Int): Carte [A, B] Retour jeter les n derniers éléments de la nouvelle collection |
17 | def dropWhile (p: ((A , B)) => Boolean): Carte [A, B] élément Jeter gauche à droite, jusqu'à ce que la condition ne p satisfait |
18 | def vide: [A, B ] Retour le même type de vide Carte |
19 | def est égal à (que: Tout):Boolean Si les deux sont égaux carte (clé / valeur sont égales), renvoie true, sinon false |
20 | existe def (p: ((A , B)) => Boolean): Boolean Analyser les conditions spécifiées dans l'élément de collection existe |
21 | def filtre (p: ((A , B)) => Boolean): Carte [A, B] Retour à toutes les collections qui répondent aux critères spécifiés |
22 | def FilterKeys (p: (A) => Boolean): Carte [A, B] Retours immuable Carte répondent aux critères spécifiques de |
23 | trouver def (p: ((A , B)) => Boolean): Option [(A, B)] Trouver le premier élément de la collection qui répond aux critères spécifiés |
24 | def foreach (f: ((A , B)) => Unité): Unité Tous les éléments de la fonction à l'ensemble |
25 | def INIT: Carte [A, B ] Renvoie tous les éléments, sauf le dernier |
26 | def isEmpty: Boolean Détecter si la carte est vide |
27 | clés def: itératifs [A] Retour toutes les clés / p> |
28 | def dernière: (A, B) Retourne le dernier élément |
29 | def max: (A, B) Trouver l'élément maximal |
30 | def min: (A, B) Trouver le plus petit élément |
31 | def mkString: String L'ensemble de tous les éléments de l'affichage sous forme de chaîne |
32 | produit def: (A, B) Retourne une collection d'éléments numériques dans l'intrigue. |
33 | def supprimer (touche: A): Option [B] Supprime la clé spécifiée |
34 | conserver def (p: (A, B) => Boolean): Map.this.type Si elles remplissent la condition renvoie true |
35 | Taille du def: Int Retourne le nombre d'éléments dans la carte |
36 | def somme: (A, B) Renvoie une collection de tous les éléments du numérique |
37 | def queue: Carte [A, B ] Retourne une collection d'autres éléments, sauf le premier élément |
38 | prendre def (n: Int): Carte [A, B] Renvoie les n premiers éléments |
39 | def takeRight (n: Int): Carte [A, B] n éléments Retour |
40 | def takeWhile (p: ((A , B)) => Boolean): Carte [A, B] Retours éléments condition spécifiée est remplie |
41 | def toArray: Array [(A, B)] Régler tableau de transfert |
42 | def toBuffer [B>: A] : Buffer [B] tampon Retour, contenant tous les éléments de la carte |
43 | def toList: Liste [A] Liste Retour, contient tous les éléments de la carte |
44 | def toSeq: Seq [A] Retour Seq, contient tous les éléments Plan |
45 | def Toset: Réglez [A] Retour Définir, contenant tous les éléments de la carte |
46 | def toString (): String Renvoie un objet String |
D' autres façons de se référer à la documentation de l' API