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:
Weiter finden wir in den Packages für automatisierte Parallelverarbeitung noch folgende Klassen:
scala.collection.parallel.immutable.ParHashSet(API
)scala.collection.parallel.mutable.ParHashSet (API
)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)
}
}
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
Wie wir sehen, ist jedes Element im TreeSet nur einmal enthalten und die Menge ist
nach der "natürlichen" Ordnung von Int-Werten sortiert.