Scala Karte (map)
Karte (Karte) ist eine Art von iterativen Schlüssel-Wert-Paare (Schlüssel / Wert) Struktur.
Alle Werte können durch einen Schlüssel abgerufen werden.
Karte der Schlüssel eindeutig ist.
Karte wird auch eine Hash-Tabelle (Hash-Tabellen) genannt.
Karte Es gibt zwei Arten von variabel und kann nicht geändert werden, es sei denn, dass die Variable Objekt, um es ohne veränderbare Objekte ändern können, kann es nicht.
Standardmäßig Scala unveränderlich Karte. Wenn Sie eine Variable Sammlung verwenden müssen, müssen Sie explizitimportieren scala.collection.mutable.Map Klasse einführen
In Scala können Sie variable und unveränderlich Karte, direkte Nutzung Karte unveränderlich, wandelbar Verwendung mutable.Map verwenden. Das folgende Beispiel demonstriert die Anwendung von unveränderlichen Karte:
// 空哈希表,键为字符串,值为整型 var A:Map[Char,Int] = Map() // Map 键值对演示 val colors = Map("red" -> "#FF0000", "azure" -> "#F0FFFF")
Wenn Sie eine Karte zu definieren, müssen Sie die Art von Schlüssel-Wert-Paare zu definieren. Wenn Sie Schlüssel-Wert-Paare hinzufügen müssen, können Sie das Pluszeichen verwenden, wie folgt:
A += ('I' -> 1) A += ('J' -> 5) A += ('K' -> 10) A += ('L' -> 100)
Grundfunktionen Karte
Scala Map Es gibt drei grundlegende Operationen:
Weg | Beschreibung |
---|---|
Schlüssel | Zurück Karte alle Schlüssel (key) |
Werte | Karte Liefert alle Werte (Wert) |
isEmpty | In der Karte ist leer Gibt true zurück |
Beispiele
Das folgende Beispiel zeigt die Anwendung der oben genannten drei Grundmethoden:
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 ) } }
Die Umsetzung des obigen Codes ist die Ausgabe:
$ scalac Test.scala $ scala Test colors 中的键为 : Set(red, azure, peru) colors 中的值为 : MapLike(#FF0000, #F0FFFF, #CD853F) 检测 colors 是否为空 : false 检测 nums 是否为空 : true
Karte Fusion
Sie können die Operator++ oder Karte verwenden. ++ ()Methode zwei Karte zu verbinden, entfernt doppelte Schlüssel , wenn Map Fusion. Die folgenden beiden Beispiele zeigen die kombinierte Karte:
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 ) } }
Die Umsetzung des obigen Codes ist die Ausgabe:
$ 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)
Karte von Ausgangs Schlüssel und Werte
Die folgende foreach-Schleife durch Ausgabe Karte von Schlüsseln und Werten:
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) )} } }
Die Umsetzung des obigen Codes ist die Ausgabe:
$ 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
Überprüfen Sie, ob der angegebene Schlüssel in der Karte vorhanden ist
Sie könnenMap.contains Methode , um zu sehen , ob die Anwesenheit der angegebenen Key Map verwenden.Beispiele sind wie folgt:
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 键不存在") } } }
Die Umsetzung des obigen Codes ist die Ausgabe:
$ scalac Test.scala $ scala Test w3big 键存在,对应的值为 :http://www.w3big.com baidu 键存在,对应的值为 :http://www.baidu.com google 键不存在
Scala Map-Methode
In der folgenden Tabelle sind die häufigsten verwendeten Methoden Scala Karte:
Nein. | Verfahren und Beschreibung |
---|---|
1 | def ++ (xs: Map [( A, B)]): Karte [A, B] Es gibt eine neue Karte, New Map xs Zusammensetzung |
2 | def - (elem1: A, elem2 : A, elems: A *): Karte [A, B] Gibt einen neuen Map, entfernen Sie den Schlüssel zu elem1, elem2 oder andere elems. |
3 | def - (xs: GTO [A ]): Karte [A, B] Gibt ein neues Map, entfernen xs entsprechenden Key-Objekt |
4 | erhalten def (Schlüssel: A): Option [B] Gibt den Wert des angegebenen Schlüssels |
5 | def Iterator: Iterator [(A, B)] Erstellen Sie einen neuen Iterator und gibt den Schlüssel / Wert-Paar |
6 | def addString (b: String): String Die Karte alle Elemente an den String angebracht ist, kann zu einem Separator hinzugefügt werden |
7 | def addString (b: Stringbuilder, sep : String): String Die Karte alle Elemente an den String angebracht ist, kann zu einem Separator hinzugefügt werden |
8 | gelten def (Schlüssel: A): B Gibt den Wert des angegebenen Schlüssel, wenn es keine Rückkehr in die Standardmethode Karte ist |
9 | def clear (): Einheit Karte löschen |
10 | def clone (): Map [A , B] Von einem zum anderen Karte Karte |
11 | def enthält (Schlüssel: A): Boolean Wenn es eine bestimmte Taste Karte ist, gibt true zurück, andernfalls false. |
12 | def copyToArray (xs: Array [( A, B)]): Einheit Kopieren auf einem Array |
13 | zählen def (p: ((A , B)) => Boolean): Int Berechnen Sie die Anzahl der Elemente, die die angegebenen Kriterien erfüllen gesetzt |
14 | def Standard (Schlüssel: A): B Der Standardwert ist Karte zurückkehrt definiert, wenn der Schlüssel nicht vorhanden ist. |
15 | Drop - def (n: int):Karte [A, B] Die neue Kollektion vor der Rückkehr verwirft n Elemente |
16 | def dropRight (n: int): Karte [A, B] Zurück verwerfen die letzten n Elemente der neuen Kollektion |
17 | def dropWhile (p: ((A , B)) => Boolean): Karte [A, B] Verwerfen Element links nach rechts, bis die Bedingung nicht erfüllt p |
18 | def leer: Map [A, B ] Bringen Sie die gleiche Art von leeren Karte |
19 | def entspricht (also: Any): Boolean Wenn die beiden gleich Karte (Schlüssel / Wert gleich sind), dann liefert true, false sonst |
20 | def existiert (p: ((A , B)) => Boolean): Boolean Die Analyse der spezifischen Bedingungen in das Sammelelement vorhanden |
21 | Filter def (p: ((A , B)) => Boolean): Karte [A, B] Zurück zu allen Sammlungen, die die angegebenen Kriterien erfüllen |
22 | def Verzögerung (p: (A) => Boolean): Karte [A, B] Gibt unveränderliche Karte entsprechen den angegebenen Kriterien von |
23 | finden def (p: ((A , B)) => Boolean): Option [(A, B)] Finden Sie das erste Element in der Sammlung, die die angegebenen Kriterien erfüllt |
24 | def foreach (f: ((A , B)) => Unit): Einheit Alle Elemente der Funktion der eingestellten |
25 | def init: Map [A, B ] Gibt alle Elemente, mit Ausnahme des letzten |
26 | def isEmpty: Boolean Nachweis, ob die Karte leer ist |
27 | def Tasten: Iterable [A] Liefert alle Schlüssel / p> |
28 | def zuletzt: (A, B) Gibt das letzte Element |
29 | def max: (A, B) Finden Sie die maximale Element |
30 | def min: (A, B) Finden Sie das kleinste Element |
31 | def mkString: String Die Menge aller Elemente des Displays als String |
32 | def Produkt: (A, B) Gibt eine Sammlung von digitalen Elementen in der Handlung. |
33 | def entfernen (Schlüssel: A): Option [B] Entfernt die angegebene Taste |
34 | behalten def (p: (A, B) => Boolean): Map.this.type Wenn sie die Bedingung gibt wahr zurück, treffen |
35 | def Größe: Int Gibt die Anzahl der Elemente in Map |
36 | def Summe: (A, B) Gibt eine Sammlung aller Elemente des digitalen |
37 | def Schwanz: Map [A, B ] Gibt eine Sammlung von anderen Elementen außer dem ersten Element |
38 | def nehmen (n: int): Karte [A, B] Gibt die ersten n Elemente |
39 | def takeRight (n: int): Karte [A, B] n Elemente Zurück |
40 | def Takewhile (p: ((A , B)) => Boolean): Karte [A, B] Gibt Elemente angegebene Bedingung erfüllt ist |
41 | def toArray: Array [(A, B)] Stellen Sie den Übertragungs Array |
42 | def toBuffer [B>: A] : Puffer [B] Zurück Puffer, alle Elemente der Karte enthält, |
43 | def ToList: Liste [A] Zurück Liste enthält alle Elemente der Karte |
44 | def toSeq: Seq [A] Zurück Seq, enthält alle Kartenelemente |
45 | def Toset: Stellen Sie [A] Zurück Set, alle Elemente der Karte enthält, |
46 | def toString (): String Gibt ein String-Objekt |
Weitere Möglichkeiten , um zu verweisen der API - Dokumentation