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