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.