Ein Stack ist eine dynamische Datenstruktur, die auf dem "Last In First Out"-Prinzip (LIFO) basiert.
Ein Stack ist eine dynamische Datenstruktur, die auf dem "Last In First Out"-Prinzip (LIFO) basiert. Hier kann also im Gegensatz zu einer Liste oder einer Queue nur auf das letzte (im Stapel also oberste) Element zugegriffen werden und auch nur an das Ende (bzw. oben) ein neues Element hinzugefügt werden.
Deklarieren
Stack
ist ein Teil des Packages Java.util
und muss importiert werden, damit du ihn verwenden kannst.
Dafür kannst du entweder über Stack
hovern (mit der Maus über das Wort gehen) und import class auswählen oder über deine Klasse import java.util.Stack;
schreiben.
Du kannst auch direkt das gesamte util
-Paket importieren, dafür verwendest du einfach den Befehl `import java.util.*;:
Besuche die App, um alle Inhalte zu sehen!
Nun muss dein Stack noch deklariert werden:
Besuche die App, um alle Inhalte zu sehen!
Dabei wird zuerst der Datentyp angegeben. Es soll sich hier um einen Stack handeln, in der int-Werte gespeichert werden, daher schreibst du Stack<Integer>
. Du kannst nicht int
als Datentyp verwenden, da in den util
-Paketen keine primitiven Datentypen verwendet werden können. Daher musst du auf Integer
zurückgreifen.
Hinter Stack <Integer>
folgt der Name deines Stacks, hier also stack
.
Hinter einem Gleichzeichen steht das Keyword new
und die Art des Stacks, hier einfach wieder Stack
.
Dahinter folgt noch einmal in spitzen Klammern der Datentyp, der gespeichert werden soll, also wieder Integer
.
Am Ende schreibst du runde Klammern und natürlich wie immer ein Semikolon.
Operationen
Dank des util
-Pakets, welches du dir importiert hast, stehen dir nicht nur die darin enthaltenen Datenstrukturen, sondern auch ihre Operationen zur Verfügung. Das ist super praktisch, da du dadurch diese nicht selbst implementieren musst!
Auf einem Stack können dabei folgende Operationen angewendet werden:
add(element)
pop()
peek()
empty()
get(index)
contains(element)
size()
add()
"legt" das in den Klammern übergebene Element auf den Stack.
pop()
entfernt das "oberste" Element im Stack.
peek()
betrachtet das "oberste" Element im Stack, ohne es zu entfernen.
empty()
überprüft, ob der Stack leer ist (true
), oder nicht (false
).
get()
wird verwendet, um das Element an dem in den
Klammern übergebenen Index auszugeben.
contains()
überprüft, ob das in den Klammern übergebene Element im Stack enthalten ist (true
) oder nicht (false
).
size()
gibt die Größe des Stacks aus.
Im folgenden Code werden noch einmal alle vorgestellten Operationen dargestellt:
Besuche die App, um alle Inhalte zu sehen!
Beispiel
Jan, Nicole und Jeremiah waren auf ihrem Campingtrip einkaufen. Beim Einladen der Einkäufe mussten sie diese in ihrer Tasche übereinander stapeln:
Besuche die App, um alle Inhalte zu sehen!
Als sie ihre Einkäufe zum Auto getragen haben ist sich Nicole auf einmal nicht mehr sicher, ob sie an das Brot gedacht haben. Sie schaut in die Tasche, kann aber nur den Dosenöffner sehen, da er obenauf liegt:
Besuche die App, um alle Inhalte zu sehen!
Um sich wirklich sicher zu sein, dass sie das Brot nicht vergessen haben, muss jetzt also nach und nach alles aus dem Beutel genommen werden, bis sie das Brot gefunden haben.
Besuche die App, um alle Inhalte zu sehen!
Nachdem Nicole den Dosenöffner und die Marmelade aus dem Beutel genommen hat, entdeckt sie das Brot.
Erleichtert räumen sie wieder alles ein
Besuche die App, um alle Inhalte zu sehen!
und machen sich wieder auf den Weg zurück zum Zeltplatz!