Scala-Sammlungen - Karte
Die Scala-Karte ist eine Sammlung von Schlüssel / Wert-Paaren. Jeder Wert kann basierend auf seinem Schlüssel abgerufen werden. Schlüssel sind in der Karte eindeutig, aber Werte müssen nicht eindeutig sein. Karten werden auch als Hash-Tabellen bezeichnet. Es gibt zwei Arten von Karten, dieimmutable und die mutable. Der Unterschied zwischen veränderlichen und unveränderlichen Objekten besteht darin, dass das Objekt selbst nicht geändert werden kann, wenn ein Objekt unveränderlich ist.
Standardmäßig verwendet Scala die unveränderliche Karte. Wenn Sie die veränderbare Map verwenden möchten, müssen Sie sie importierenscala.collection.mutable.MapKlasse explizit. Wenn Sie sowohl veränderbare als auch unveränderliche Karten gleichzeitig verwenden möchten, können Sie weiterhin auf die unveränderliche Karte als verweisenMap Sie können sich jedoch auf die veränderbare Menge als beziehen mutable.Map.
Das Folgende sind die Beispielanweisungen zum Deklarieren unveränderlicher Karten -
// Empty hash table whose keys are strings and values are integers:
var A:Map[Char,Int] = Map()
// A map with keys and values.
val colors = Map("red" -> "#FF0000", "azure" -> "#F0FFFF")
Beim Definieren einer leeren Karte ist die Typanmerkung erforderlich, da das System der Variablen einen konkreten Typ zuweisen muss. Wenn wir einer Map ein Schlüssel-Wert-Paar hinzufügen möchten, können wir den Operator + wie folgt verwenden.
A + = ('I' -> 1)
A + = ('J' -> 5)
A + = ('K' -> 10)
A + = ('L' -> 100)
Grundlegende Operationen auf MAP
Alle Operationen auf Karten können mit den folgenden drei Methoden ausgedrückt werden.
Sr.Nr. | Methoden & Beschreibung |
---|---|
1 | keys Diese Methode gibt eine Iterable zurück, die jeden Schlüssel in der Karte enthält. |
2 | values Diese Methode gibt eine Iterable zurück, die jeden Wert in der Karte enthält. |
3 | isEmpty Diese Methode gibt true zurück, wenn die Map leer ist, andernfalls false. |
Probieren Sie das folgende Beispielprogramm aus, das die Verwendung der Map-Methoden zeigt.
Beispiel
object Demo {
def main(args: Array[String]) {
val colors = Map(
"red" -> "#FF0000", "azure" -> "#F0FFFF", "peru" -> "#CD853F"
)
val nums: Map[Int, Int] = Map()
println( "Keys in colors : " + colors.keys )
println( "Values in colors : " + colors.values )
println( "Check if colors is empty : " + colors.isEmpty )
println( "Check if nums is empty : " + nums.isEmpty )
}
}
Speichern Sie das obige Programm in Demo.scala. Die folgenden Befehle werden zum Kompilieren und Ausführen dieses Programms verwendet.
Befehl
\>scalac Demo.scala
\>scala Demo
Ausgabe
Keys in colors : Set(red, azure, peru)
Values in colors : MapLike(#FF0000, #F0FFFF, #CD853F)
Check if colors is empty : false
Check if nums is empty : true
Karten verketten
Sie können entweder verwenden ++ Betreiber oder Map.++() Methode zum Verketten von zwei oder mehr Maps, aber beim Hinzufügen von Maps werden doppelte Schlüssel entfernt.
Versuchen Sie das folgende Beispielprogramm, um zwei Karten zu verketten.
Beispiel
object Demo {
def main(args: Array[String]) {
val colors1 = Map(
"red" -> "#FF0000", "azure" -> "#F0FFFF", "peru" -> "#CD853F"
)
val colors2 = Map(
"blue" -> "#0033FF", "yellow" -> "#FFFF00", "red" -> "#FF0000"
)
// use two or more Maps with ++ as operator
var colors = colors1 ++ colors2
println( "colors1 ++ colors2 : " + colors )
// use two maps with ++ as method
colors = colors1.++(colors2)
println( "colors1.++(colors2)) : " + colors )
}
}
Speichern Sie das obige Programm in Demo.scala. Die folgenden Befehle werden zum Kompilieren und Ausführen dieses Programms verwendet.
Befehl
\>scalac Demo.scala
\>scala Demo
Ausgabe
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)
Drucken Sie Schlüssel und Werte von einer Karte
Sie können die Schlüssel und Werte einer Karte mit der Schleife "foreach" durchlaufen. Hier haben wir die Methode verwendetforeachverbunden mit Iterator, um durch die Schlüssel zu gehen. Es folgt das Beispielprogramm.
Beispiel
object Demo {
def main(args: Array[String]) {
val colors = Map("red" -> "#FF0000", "azure" -> "#F0FFFF","peru" -> "#CD853F")
colors.keys.foreach{
i =>
print( "Key = " + i )
println(" Value = " + colors(i) )
}
}
}
Speichern Sie das obige Programm in Demo.scala. Die folgenden Befehle werden zum Kompilieren und Ausführen dieses Programms verwendet.
Befehl
\>scalac Demo.scala
\>scala Demo
Ausgabe
Key = red Value = #FF0000
Key = azure Value = #F0FFFF
Key = peru Value = #CD853F
Suchen Sie in Map nach einem Schlüssel
Sie können entweder verwenden Map.containsMethode zum Testen, ob ein bestimmter Schlüssel in der Karte vorhanden ist oder nicht. Versuchen Sie das folgende Beispielprogramm zur Schlüsselprüfung.
Beispiel
object Demo {
def main(args: Array[String]) {
val colors = Map(
"red" -> "#FF0000", "azure" -> "#F0FFFF", "peru" -> "#CD853F"
)
if( colors.contains( "red" )) {
println("Red key exists with value :" + colors("red"))
} else {
println("Red key does not exist")
}
if( colors.contains( "maroon" )) {
println("Maroon key exists with value :" + colors("maroon"))
} else {
println("Maroon key does not exist")
}
}
}
Speichern Sie das obige Programm in Demo.scala. Die folgenden Befehle werden zum Kompilieren und Ausführen dieses Programms verwendet.
Befehl
\>scalac Demo.scala
\>scala Demo
Ausgabe
Red key exists with value :#FF0000
Maroon key does not exist