In diesem Tutorial lernen wir anhand von Beispielen die Java Stack-Klasse und ihre Methoden kennen.
Das Java-Sammlungsframework verfügt über eine Klasse mit dem Namen Stack
, die die Funktionalität der Stapeldatenstruktur bereitstellt.
Die Stack
Klasse erweitert die Vector
Klasse.
Stapelimplementierung
Im Stapel werden Elemente gespeichert und auf Last In First Out- Weise zugegriffen . Das heißt, Elemente werden oben im Stapel hinzugefügt und oben im Stapel entfernt.
Stapel erstellen
Um einen Stapel zu erstellen, müssen wir java.util.Stack
zuerst das Paket importieren . Sobald wir das Paket importiert haben, können wir hier einen Stapel in Java erstellen.
Stack stacks = new Stack();
Hier wird Type
der Stapeltyp angegeben. Beispielsweise,
// Create Integer type stack Stack stacks = new Stack(); // Create String type stack Stack stacks = new Stack();
Stapelmethoden
Da Stack
die Vector
Klasse erweitert wird, erbt sie alle Methoden Vector
. Weitere Informationen zu verschiedenen Vector
Methoden finden Sie unter Java Vector Class.
Neben diesen Methoden enthält die Stack
Klasse 5 weitere Methoden, von denen sie sich unterscheidet Vector
.
push () Methode
Um ein Element oben im Stapel hinzuzufügen, verwenden wir die push()
Methode. Beispielsweise,
import java.util.Stack; class Main ( public static void main(String() args) ( Stack animals= new Stack(); // Add elements to Stack animals.push("Dog"); animals.push("Horse"); animals.push("Cat"); System.out.println("Stack: " + animals); ) )
Ausgabe
Stapel: (Hund, Pferd, Katze)
pop () Methode
Um ein Element vom oberen Rand des Stapels zu entfernen, verwenden wir die pop()
Methode. Beispielsweise,
import java.util.Stack; class Main ( public static void main(String() args) ( Stack animals= new Stack(); // Add elements to Stack animals.push("Dog"); animals.push("Horse"); animals.push("Cat"); System.out.println("Initial Stack: " + animals); // Remove element stacks String element = animals.pop(); System.out.println("Removed Element: " + element); ) )
Ausgabe
Anfangsstapel: (Hund, Pferd, Katze) Entferntes Element: Katze
peek () Methode
Die peek()
Methode gibt ein Objekt vom oberen Rand des Stapels zurück. Beispielsweise,
import java.util.Stack; class Main ( public static void main(String() args) ( Stack animals= new Stack(); // Add elements to Stack animals.push("Dog"); animals.push("Horse"); animals.push("Cat"); System.out.println("Stack: " + animals); // Access element from the top String element = animals.peek(); System.out.println("Element at top: " + element); ) )
Ausgabe
Stapel: (Hund, Pferd, Katze) Element oben: Katze
search () Methode
Um ein Element im Stapel zu durchsuchen, verwenden wir die search()
Methode. Es gibt die Position des Elements vom oberen Rand des Stapels zurück. Beispielsweise,
import java.util.Stack; class Main ( public static void main(String() args) ( Stack animals= new Stack(); // Add elements to Stack animals.push("Dog"); animals.push("Horse"); animals.push("Cat"); System.out.println("Stack: " + animals); // Search an element int position = animals.search("Horse"); System.out.println("Position of Horse: " + position); ) )
Ausgabe
Stapel: (Hund, Pferd, Katze) Position des Pferdes: 2
empty () Methode
Um zu überprüfen, ob ein Stapel leer ist oder nicht, verwenden wir die empty()
Methode. Beispielsweise,
import java.util.Stack; class Main ( public static void main(String() args) ( Stack animals= new Stack(); // Add elements to Stack animals.push("Dog"); animals.push("Horse"); animals.push("Cat"); System.out.println("Stack: " + animals); // Check if stack is empty boolean result = animals.empty(); System.out.println("Is the stack empty? " + result); ) )
Ausgabe
Stapel: (Hund, Pferd, Katze) Ist der Stapel leer? falsch
Verwenden Sie ArrayDeque anstelle von Stack
Die Stack
Klasse bietet die direkte Implementierung der Stack-Datenstruktur. Es wird jedoch empfohlen, es nicht zu verwenden. Verwenden Sie stattdessen die ArrayDeque
Klasse (implementiert die Deque
Schnittstelle), um die Stapeldatenstruktur in Java zu implementieren.
Um mehr zu erfahren, besuchen Sie:
- Java ArrayDeque
- Warum Deque over Stack verwenden?