Einstieg

Ein Set ist eine Datenstruktur ähnlich der List mit dem Unterschied, dass ein Set keine doppelten Elemente enthält.

Neben zahlreichen Traits und Compnion / Singleton Objects enthält die Scala Collection API folgende Konkrete Set Klassen, die direkt verwendet werden können.

Im Package scala.collection.immutable finden wir die konkreten Klassen für unveränderliche Sets:

Das Package scala.collection.mutable hält folgende Klassen für veränderliche Sets bereit:

  • BitSet (API Flagge Großbritanien)
  • HashSet (API Flagge Großbritanien)
  • LinkedHashSet (API Flagge Großbritanien)

Weiter finden wir in den Packages für automatisierte Parallelverarbeitung noch folgende Klassen:

  • scala.collection.parallel.immutable.ParHashSet(API Flagge Großbritanien)
  • scala.collection.parallel.mutable.ParHashSet (API Flagge Großbritanien)

Unveränderliches HashSet

Eine einfache Möglichkeit zur Erzeugung eines HashSet ist die Verwendung der zugehörigen Methode apply (die Verwendung der Methode kann ohne Angabe des Namens erfolgen).

import scala.collection.immutable.HashSet

object HashSetDemo {

  def main(args: Array[String]): Unit = {
    val myHashSet = HashSet(1,1,3,3,5,5,5,6)
    myHashSet.foreach(println)
  }
}
itmapa.de - X2H V 0.20

Die Reihenfolge, in der die Elemente im Set abgelegt werden, ist nicht definiert. So ist eine Möglichkeit der Ausgabe des Programms folgende.

5
1
6
3
            

An diesem Beispiel sehen wir, auch wenn wir mehrfach das gleiche Objekt definieren, ist es nur einmal im Set enthalten.

TreeSet

Mit scala.collection.immutable.TreeSet wird uns eine Datenstruktur geboten, mit der wir eindeutige Elemente in sortierter Reihenfolge aus einer Menge von Elementen erhalten. In nachfolgender REPL-Session erzeugen wir aus einer Menge Int-Werten ein TreeSet und geben die enthaltenen Werte anschließend aus.

scala> import scala.collection.immutable.TreeSet
import scala.collection.immutable.TreeSet

scala> val myTreeSet = TreeSet(1,6,3,4,4,7,3,4)
myTreeSet: scala.collection.immutable.TreeSet[Int] = TreeSet(1, 3, 4, 6, 7)

scala> myTreeSet.foreach(println)
1
3
4
6
7
itmapa.de - X2H V 0.20

Wie wir sehen, ist jedes Element im TreeSet nur einmal enthalten und die Menge ist nach der "natürlichen" Ordnung von Int-Werten sortiert.