Der Stapel ist eine lineare Datenstruktur, die zum Speichern der Sammlung von Objekten verwendet wird. Es basiert auf Zuletzt rein, zuerst raus (LIFO). Java-Sammlung Das Framework bietet viele Schnittstellen und Klassen zum Speichern der Sammlung von Objekten. Einer davon ist der Stack-Klasse das verschiedene Operationen wie Push, Pop, Suche usw. bereitstellt.
js globale Variable
In diesem Abschnitt werden wir das besprechen Java-Stack-Klasse , es ist Methoden, Und implementieren die Stapeldatenstruktur in a Java-Programm . Bevor Sie jedoch zur Java-Stack-Klasse wechseln, werfen Sie einen kurzen Blick auf die Funktionsweise des Stacks.
Die Stapeldatenstruktur verfügt über die beiden wichtigsten Operationen drücken Und Pop . Die Push-Operation fügt ein Element in den Stapel ein und die Pop-Operation entfernt ein Element von der Oberseite des Stapels. Mal sehen, wie sie auf dem Stapel funktionieren.
Schieben wir jeweils 20, 13, 89, 90, 11, 45, 18 in den Stapel.
Entfernen (pop) wir 18, 45 und 11 vom Stapel.
Leerer Stapel: Wenn der Stapel kein Element enthält, spricht man von einem leerer Stapel . Wenn der Stapel leer ist, ist der Wert der obersten Variablen -1.
Wenn wir ein Element in den Stapel schieben, ist es die oberste um 1 erhöht . In der folgenden Abbildung:
- Drücken Sie 12, oben = 0
- Drücken Sie 6, oben = 1
- Drücken Sie 9, oben = 2
Wenn wir ein Element vom Stapel entfernen, hat top den Wert um 1 verringert . In der folgenden Abbildung haben wir 9 angezeigt.
Die folgende Tabelle zeigt die unterschiedlichen Werte der Oberseite.
Java-Stack-Klasse
In Java, Stapel ist eine Klasse, die unter das Collection-Framework fällt, das die erweitert Vektor Klasse. Es implementiert auch Schnittstellen Liste, Sammlung, iterierbar, klonbar, serialisierbar. Es stellt den LIFO-Stapel von Objekten dar. Bevor wir die Stack-Klasse verwenden, müssen wir die importierenjava.utilPaket. Die Stack-Klasse ist in der Collections-Framework-Hierarchie angeordnet, wie unten gezeigt.
Stack-Klassenkonstruktor
Die Stack-Klasse enthält nur die Standardkonstruktor das erzeugt einen leeren Stapel.
public Stack()
Einen Stapel erstellen
Wenn wir einen Stapel erstellen möchten, importieren Sie zunächst denjava.utilPaket und erstellen Sie ein Objekt der Stack-Klasse.
Stack stk = new Stack();
Oder
Stack stk = new Stack();
Wobei Typ den Typ des Stapels angibt, z. B. Ganzzahl, Zeichenfolge usw.
Methoden der Stack-Klasse
Wir können Push-, Pop-, Peek- und Suchvorgänge auf dem Stapel ausführen. Die Java-Stack-Klasse stellt hauptsächlich fünf Methoden zum Ausführen dieser Operationen bereit. Darüber hinaus werden alle Methoden bereitgestellt Java-Vektorklasse .
Methode | Modifikator und Typ | Methodenbeschreibung |
---|---|---|
leer() | Boolescher Wert | Die Methode prüft, ob der Stapel leer ist oder nicht. |
push(E-Item) | UND | Die Methode schiebt (fügt) ein Element oben auf den Stapel. |
Pop() | UND | Die Methode entfernt ein Element oben im Stapel und gibt dasselbe Element als Wert dieser Funktion zurück. |
spähen() | UND | Die Methode betrachtet das oberste Element des Stapels, ohne es zu entfernen. |
Suche (Objekt o) | int | Die Methode durchsucht das angegebene Objekt und gibt die Position des Objekts zurück. |
Methode der Stack-Klasse empty()
Der leer() Methode der Stack-Klasse prüft, ob der Stack leer ist oder nicht. Wenn der Stapel leer ist, wird „true“ zurückgegeben, andernfalls wird „false“ zurückgegeben. Wir können auch die Methode isEmpty() der Klasse Vector verwenden.
Syntax
public boolean empty()
Kehrt zurück: Die Methode gibt „true“ zurück, wenn der Stapel leer ist, andernfalls gibt sie „false“ zurück.
Im folgenden Beispiel haben wir eine Instanz der Stack-Klasse erstellt. Danach haben wir die Methode empty() zweimal aufgerufen. Beim ersten Mal kehrt es zurück WAHR weil wir kein Element in den Stapel geschoben haben. Danach haben wir Elemente in den Stapel geschoben. Wieder haben wir die Methode empty() aufgerufen, die zurückgibt FALSCH weil der Stapel nicht leer ist.
StackEmptyMethodExample.java
import java.util.Stack; public class StackEmptyMethodExample { public static void main(String[] args) { //creating an instance of Stack class Stack stk= new Stack(); // checking stack is empty or not boolean result = stk.empty(); System.out.println('Is the stack empty? ' + result); // pushing elements into stack stk.push(78); stk.push(113); stk.push(90); stk.push(120); //prints elements of the stack System.out.println('Elements in Stack: ' + stk); result = stk.empty(); System.out.println('Is the stack empty? ' + result); } }
Ausgabe:
Is the stack empty? true Elements in Stack: [78, 113, 90, 120] Is the stack empty? false
Push()-Methode der Stack-Klasse
Die Methode fügt ein Element oben auf den Stapel ein. Sie funktioniert genauso wie die Methode addElement(item) der Vector-Klasse. Es übergibt einen Parameter Artikel in den Stapel geschoben werden.
Syntax
public E push(E item)
Parameter: Ein Gegenstand, der oben auf den Stapel geschoben wird.
Kehrt zurück: Die Methode gibt das Argument zurück, das wir als Parameter übergeben haben.
Methode der Stack-Klasse pop()
Die Methode entfernt ein Objekt oben im Stapel und gibt dasselbe Objekt zurück. Es wirft EmptyStackException wenn der Stapel leer ist.
Syntax
public E pop()
Kehrt zurück: Es gibt ein Objekt zurück, das sich oben im Stapel befindet.
Lassen Sie uns den Stapel in einem Java-Programm implementieren und Push- und Pop-Operationen ausführen.
StackPushPopExample.java
import java.util.*; public class StackPushPopExample { public static void main(String args[]) { //creating an object of Stack class Stack stk = new Stack(); System.out.println('stack: ' + stk); //pushing elements into the stack pushelmnt(stk, 20); pushelmnt(stk, 13); pushelmnt(stk, 89); pushelmnt(stk, 90); pushelmnt(stk, 11); pushelmnt(stk, 45); pushelmnt(stk, 18); //popping elements from the stack popelmnt(stk); popelmnt(stk); //throws exception if the stack is empty try { popelmnt(stk); } catch (EmptyStackException e) { System.out.println('empty stack'); } } //performing push operation static void pushelmnt(Stack stk, int x) { //invoking push() method stk.push(new Integer(x)); System.out.println('push -> ' + x); //prints modified stack System.out.println('stack: ' + stk); } //performing pop operation static void popelmnt(Stack stk) { System.out.print('pop -> '); //invoking pop() method Integer x = (Integer) stk.pop(); System.out.println(x); //prints modified stack System.out.println('stack: ' + stk); } }
Ausgabe:
stack: [] push -> 20 stack: [20] push -> 13 stack: [20, 13] push -> 89 stack: [20, 13, 89] push -> 90 stack: [20, 13, 89, 90] push -> 11 stack: [20, 13, 89, 90, 11] push -> 45 stack: [20, 13, 89, 90, 11, 45] push -> 18 stack: [20, 13, 89, 90, 11, 45, 18] pop -> 18 stack: [20, 13, 89, 90, 11, 45] pop -> 45 stack: [20, 13, 89, 90, 11] pop -> 11 stack: [20, 13, 89, 90]
peek()-Methode der Stack-Klasse
Es betrachtet das Element, das sich oben im Stapel befindet. Es wirft auch EmptyStackException wenn der Stapel leer ist.
Syntax
public E peek()
Kehrt zurück: Es gibt die obersten Elemente des Stapels zurück.
Sehen wir uns ein Beispiel der peek()-Methode an.
StackPeekMethodExample.java
import java.util.Stack; public class StackPeekMethodExample { public static void main(String[] args) { Stack stk= new Stack(); // pushing elements into Stack stk.push('Apple'); stk.push('Grapes'); stk.push('Mango'); stk.push('Orange'); System.out.println('Stack: ' + stk); // Access element from the top of the stack String fruits = stk.peek(); //prints stack System.out.println('Element at top: ' + fruits); } }
Ausgabe:
Stack: [Apple, Grapes, Mango, Orange] Element at the top of the stack: Orange
Stack-Klasse search()-Methode
Die Methode durchsucht das Objekt im Stapel von oben. Es analysiert einen Parameter, nach dem wir suchen möchten. Es gibt die 1-basierte Position des Objekts im Stapel zurück. Das oberste Objekt des Stapels wird im Abstand 1 betrachtet.
Angenommen, o ist ein Objekt im Stapel, nach dem wir suchen möchten. Die Methode gibt den Abstand von der Oberseite des Stapels des Vorkommens zurück, das der Oberseite des Stapels am nächsten liegt. Es benutzt gleich() Methode zum Suchen eines Objekts im Stapel.
Syntax
public int search(Object o)
Parameter: o ist das gewünschte Objekt, das durchsucht werden soll.
Kehrt zurück: Es gibt die Objektposition von der Oberseite des Stapels zurück. Wenn -1 zurückgegeben wird, bedeutet dies, dass sich das Objekt nicht auf dem Stapel befindet.
Sehen wir uns ein Beispiel der search()-Methode an.
StackSearchMethodExample.java
import java.util.Stack; public class StackSearchMethodExample { public static void main(String[] args) { Stack stk= new Stack(); //pushing elements into Stack stk.push('Mac Book'); stk.push('HP'); stk.push('DELL'); stk.push('Asus'); System.out.println('Stack: ' + stk); // Search an element int location = stk.search('HP'); System.out.println('Location of Dell: ' + location); } }
Java-Stack-Operationen
Größe des Stapels
Wir können die Größe des Stapels auch mithilfe der Methode size() der Klasse Vector ermitteln. Es gibt die Gesamtzahl der Elemente (Größe des Stapels) im Stapel zurück.
Syntax
public int size()
Sehen wir uns ein Beispiel der size()-Methode der Vector-Klasse an.
StackSizeExample.java
import java.util.Stack; public class StackSizeExample { public static void main (String[] args) { Stack stk = new Stack(); stk.push(22); stk.push(33); stk.push(44); stk.push(55); stk.push(66); // Checks the Stack is empty or not boolean rslt=stk.empty(); System.out.println('Is the stack empty or not? ' +rslt); // Find the size of the Stack int x=stk.size(); System.out.println('The stack size is: '+x); } }
Ausgabe:
Is the stack empty or not? false The stack size is: 5
Elemente iterieren
Iterieren bedeutet, die Elemente des Stapels abzurufen. Wir können Elemente des Stapels mit drei verschiedenen Methoden abrufen:
- Benutzen Iterator() Methode
- Benutzen für jede() Methode
- Benutzen listIterator() Methode
Verwendung der iterator()-Methode
Es ist die Methode der Iterator-Schnittstelle. Es gibt einen Iterator über die Elemente im Stapel zurück. Bevor Sie die Methode iterator() verwenden, importieren Sie diejava.util.IteratorPaket.
Syntax
Iterator iterator()
Führen wir eine Iteration über den Stapel durch.
StackIterationExample1.java
import java.util.Iterator; import java.util.Stack; public class StackIterationExample1 { public static void main (String[] args) { //creating an object of Stack class Stack stk = new Stack(); //pushing elements into stack stk.push('BMW'); stk.push('Audi'); stk.push('Ferrari'); stk.push('Bugatti'); stk.push('Jaguar'); //iteration over the stack Iterator iterator = stk.iterator(); while(iterator.hasNext()) { Object values = iterator.next(); System.out.println(values); } } }
Ausgabe:
BMW Audi Ferrari Bugatti Jaguar
Verwendung der forEach()-Methode
Java bietet eine forEach()-Methode zum Durchlaufen der Elemente. Die Methode ist in der definiert Wiederholbar Und Strom Schnittstelle.
Syntax
default void forEach(Consumeraction)
Lassen Sie uns mit der Methode forEach() über den Stapel iterieren.
StackIterationExample2.java
import java.util.*; public class StackIterationExample2 { public static void main (String[] args) { //creating an instance of Stack class Stack stk = new Stack(); //pushing elements into stack stk.push(119); stk.push(203); stk.push(988); System.out.println('Iteration over the stack using forEach() Method:'); //invoking forEach() method for iteration over the stack stk.forEach(n -> { System.out.println(n); }); } }
Ausgabe:
Iteration over the stack using forEach() Method: 119 203 988
Verwendung der listIterator()-Methode
Diese Methode gibt einen Listeniterator über die Elemente in der genannten Liste (nacheinander) zurück, beginnend an der angegebenen Position in der Liste. Es iteriert den Stapel von oben nach unten.
Syntax
ListIterator listIterator(int index)
Parameter: Die Methode analysiert einen Parameter mit dem Namen Index.
Kehrt zurück: Diese Methode gibt einen Listeniterator über die Elemente nacheinander zurück.
Ausnahme: Es wirft IndexOutOfBoundsException wenn der Index außerhalb des Bereichs liegt.
Lassen Sie uns mit der Methode listIterator() über den Stapel iterieren.
StackIterationExample3.java
import java.util.Iterator; import java.util.ListIterator; import java.util.Stack; public class StackIterationExample3 { public static void main (String[] args) { Stack stk = new Stack(); stk.push(119); stk.push(203); stk.push(988); ListIterator ListIterator = stk.listIterator(stk.size()); System.out.println('Iteration over the Stack from top to bottom:'); while (ListIterator.hasPrevious()) { Integer avg = ListIterator.previous(); System.out.println(avg); } } }
Ausgabe:
Iteration over the Stack from top to bottom: 988 203 119