8. Sets


Genau wie das Array, ist auch das Set eine Datenstruktur-Variante, die in erster Linie dazu dient, Daten zu verarbeiten und zu organisieren. Im Gegensatz zum Array, kommt es beim Set nicht auf die Reihenfolge der Daten an. Es geht lediglich darum, gleichartige Daten zusammen in einen Sack zu stecken. Außerdem bietet sich das Set vor allem dann an, wenn wir Daten vergleichen wollen und zusammenhänge herausfinden möchten.

 

8.1  Set erstellen

Ein Set kreieren wir uns, indem wir mit „var“ eine Variable erstellen, dieser mit einem Gleichheitszeichen sagen, dass sie ein Set ist und geben ihr gleich noch den Datentyp an, in dem die Daten gespeichert werden. Der Datentyp kommt in spitze Klammern und abschließen tun wir mit runden Klammern.


var gemuese = Set<String>()


8.2 Set füllen und leeren

Das füllen und leeren von Sets kennen wir bereits vom Array. Auch hier benutzen wir die „.insert“ Methode um Werte hinzuzufügen und die „.remove“ Methode um Werte zu entfernen. Sollten wir das gesamte Set leeren wollen, könne wir dafür die „.removeAll“ Methode verwenden.

gemuese.insert("Broccoli")
gemuese.insert("Aubergine")
gemuese.insert("Gurke")

gemuese.remove("Broccoli")
gemuese.removeAll()

In Swift haben wir auch die Möglichkeit ein Set mit Array Werten zu füllen. Hier müssen wir die Bildung des Sets beachten, den Rest kennen wir aus dem Kapitel des Array.

var obst: Set<String> = ["Banane", "Apfel", "Trauben", "Kiwi"]

Auch hier haben wir den Datentyp angegeben. Das ist allerdings nicht zwingend nötig. Swift erkennt wie immer den Datentyp von selbst. Es kann jedoch helfen das zu tun, z.B. dann, wenn wir erzwingen wollen, dass niemals ein Wert eines anderen Datentyps als das des Strings hineingespeichert wird. Sollte das nicht der Fall sein, könne wir den Code verkürzen indem wir die Bildung wie folg gestallten:

var obst2: Set = ["Banane", "Apfel", "Trauben", "Kiwi"]

8.3  Daten aus einem Set lesen

 

Die objektorientierte Programmiersprache Swift bietet uns, wie auch viele andere Programmiersprachen, eine ganze Sammlung an Methoden, die wir nutzen könne. Einige haben wir schon bei den Arrays kenngelernt. Z.B. die Methode „.count“, welche uns die Anzahl an gespeicherten Daten zurückgibt. Oder auch die „.isEmpty“ Methode, die uns mittels true oder false Bescheid sagt, ob eine entsprechende Datensammlung leer ist. Die gerade eben erwähnten Methoden funktionieren natürlich ebenso mit einem Set. In diesem Kapitel lernen wir eine weiter nützliche Methode, die ebenfalls universell verwendbar ist. Mit „.contains“ könne wir prüfen, ob ein bestimmter Wert in einer Datensammlung vorhanden ist.

if obst.contains("Apfel"){
print("Es sind noch Äpfel da")
}else{
print("Keine Äpfel mehr da")
}

Du hast bestimmt schon gemerkt, dass die Funktionsweise von Swift sehr einfach gestrickt ist und universell in der Programmiersprache verwendbar ist. Als nächstes lernen wir einen neuen Verwendungszweck der for-in Schleife. Wir könne sie nutzen, um den gesamten Inhalt eines Sets, aber auch eines Arrays, auszulesen.

Dafür kreieren wir uns innerhalb der for-in Schleife eine Variable, die in diesem Beispiel „obstArt“ heisst. Im Endeffekt ist der genau Name jedoch nicht relevant. Der Rest der Schleife bleibt gleich, nur, dass wir kein Spektrum angeben müssen. Dieses bildet nun das Set/Array, mit der Anzahl an gespeicherten Daten.

for obstArt in obst{
print("\(obstArt)")
}

8.4 Set Operationen

 

Wie ich zu Beginn des Kapitels schon erwähnt habe, bietet sich das Set vor allem für Daten Vergleiche und Zusammenhänge an. Hierfür machen wir wieder ein Beispiel, das auf mathematischer Basis ist. Wir brauchen drei Sets mit Werten des Datentyps Int.

var zahlenSatz1: Set = [1,2,3,4,5]
var zahlenSatz2: Set = [6,7,8,9,10]
var zahlenSatz3: Set = [1,5,4,7,9,6,8]


In jedem Set sind Zahlen gespeichert, in manchen die Gleichen, in manchen gibt es gar keine Übereinstimmungen. In Swift gibt es unter den Sets Methoden zu Abgleichung von Daten.

 .union(_:)

-       Kreiert ein Set mit Werten aus zwei Sets 

.intersection(_:)

-       Kreiert ein Set mit übereinstimmenden Werten 

.subtracting(_:)

-       Kreiert ein Set mit Werten, die im anderen Set nicht vorhanden sind. 

.symmetricDifference(_:)

-       Kreiert ein Set mit Werten aus beiden Sets, ausser den übereinstimmenden.

zahlenSatz1.union(zahlenSatz2)
zahlenSatz3.intersection(zahlenSatz2)
zahlenSatz3.subtracting(zahlenSatz2)
zahlenSatz3.symmetricDifference(zahlenSatz2)

 

8.5 Zugehörigkeiten


Sets könne nicht nur Übereinstimmen, sondern auch die gleichen Werte wie ein Teil eines zweiten Sets haben. Auch hier machen wir ein Beispiel, diesmal aber mit Tieren (Haustieren, Hoftieren und Stadttiere)

var haustiere: Set = ["Hund", "Katze"]
var hoftiere: Set = ["Kuh", "Huhn", "Schaf", "Hund", "Katze"]
var stadtTiere: Set = ["Taube", "Maus"]

.isSubset(Of: )

-       Alle Werte aus dem ersten Set sind auch im zweiten vorhanden.  

.isSuperset(Of: )

-       Einige Werte aus dem ersten Set bilden alle Werte des zweiten Sets. 

.isDisjoint(with: )

-       Keine Werte sind übereinstimmend

hausTiere.isSubset(of: hofTiere)
//true
hofTiere.isSuperset(of: hausTiere)
//true
hofTiere.isDisjoint(with: stadtTiere)
//true

 

Stelle uns deine Frage


Julien Rösch


 

Amazon

 

E-Book

 

Gefällt dir CodeStarter?