The stos to liniowa struktura danych używana do przechowywania kolekcji obiektów. Opiera się na Ostatni na wejściu, pierwszy na wyjściu (LIFO). Kolekcja Java framework udostępnia wiele interfejsów i klas do przechowywania kolekcji obiektów. Jednym z nich jest Klasa stosu który zapewnia różne operacje, takie jak push, pop, search itp.
W tej części omówimy Klasa stosu Java , jego metody, I wprowadzić w życie struktura danych stosu w a Program Java . Zanim jednak przejdziesz do klasy Java Stack, przyjrzyj się szybko, jak działa stos.
Struktura danych stosu składa się z dwóch najważniejszych operacji naciskać I Muzyka pop . Operacja push wstawia element do stosu, a operacja pop usuwa element ze szczytu stosu. Zobaczmy jak działają na stosie.
Włóżmy odpowiednio 20, 13, 89, 90, 11, 45, 18 na stos.
Usuńmy (pop) 18, 45 i 11 ze stosu.
Pusty stos: Jeśli stos nie zawiera żadnego elementu, nazywa się to an pusty stos . Gdy stos jest pusty, wartość górnej zmiennej wynosi -1.
numpy meshgrid
Kiedy wkładamy element do stosu, jest on na górze wzrosła o 1 . Na poniższym rysunku
- Naciśnij 12, góra=0
- Naciśnij 6, góra=1
- Naciśnij 9, góra=2
Kiedy zdejmujemy element ze stosu, wartość top wynosi spadła o 1 . Na poniższym rysunku wyskoczyliśmy 9.
Poniższa tabela przedstawia różne wartości górne.
Klasa stosu Java
na Jawie, Stos to klasa należąca do frameworka Collection, który rozszerza Wektor klasa. Implementuje także interfejsy Lista, kolekcja, iterowalność, klonowanie, serializacja. Reprezentuje stos obiektów LIFO. Przed użyciem klasy Stack musimy zaimportować plikjava.utilpakiet. Klasa stosu ułożona w hierarchii struktury Kolekcje, jak pokazano poniżej.
Konstruktor klasy stosu
Klasa Stack zawiera tylko domyślny konstruktor co tworzy pusty stos.
public Stack()
Tworzenie stosu
Jeśli chcemy utworzyć stos, najpierw zaimportuj plikjava.utilpackage i utwórz obiekt klasy Stack.
Stack stk = new Stack();
Lub
Stack stk = new Stack();
Gdzie typ oznacza typ stosu, taki jak liczba całkowita, ciąg znaków itp.
Metody klasy Stack
Możemy wykonywać operacje push, pop, peek i search na stosie. Klasa Java Stack udostępnia głównie pięć metod wykonywania tych operacji. Oprócz tego udostępnia wszystkie metody programu Klasa wektora Java .
metoda | Modyfikator i typ | Opis metody |
---|---|---|
pusty() | wartość logiczna | Metoda sprawdza, czy stos jest pusty. |
naciśnij (element E) | I | Metoda wypycha (wstawia) element na górę stosu. |
Muzyka pop() | I | Metoda usuwa element ze szczytu stosu i zwraca ten sam element, co wartość tej funkcji. |
zerkać() | I | Metoda sprawdza najwyższy element stosu bez jego usuwania. |
szukaj (obiekt o) | wew | Metoda przeszukuje określony obiekt i zwraca położenie obiektu. |
Metoda stosu klasy pusta().
The pusty() metoda klasy Stack sprawdza, czy stos jest pusty, czy nie. Jeśli stos jest pusty, zwraca wartość true, w przeciwnym razie zwraca wartość false. Możemy także użyć metody isEmpty() klasy Vector.
Składnia
public boolean empty()
Zwroty: Metoda zwraca wartość true, jeśli stos jest pusty, w przeciwnym razie zwraca wartość false.
W poniższym przykładzie utworzyliśmy instancję klasy Stack. Następnie dwukrotnie wywołaliśmy metodę pusty(). Pierwszy raz powraca PRAWDA ponieważ nie wepchnęliśmy żadnego elementu na stos. Następnie wepchnęliśmy elementy na stos. Ponownie wywołaliśmy metodę pusty(), która zwraca FAŁSZ ponieważ stos nie jest pusty.
odchylenie standardowe pandy
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); } }
Wyjście:
Is the stack empty? true Elements in Stack: [78, 113, 90, 120] Is the stack empty? false
Metoda push() klasy stosu
Metoda wstawia element na górę stosu. Działa tak samo jak metoda addElement(item) klasy Vector. Przekazuje parametr przedmiot do wrzucenia do stosu.
Składnia
public E push(E item)
Parametr: Przedmiot, który należy zepchnąć na szczyt stosu.
Zwroty: Metoda zwraca argument, który przekazaliśmy jako parametr.
Metoda pop() klasy stosu
Metoda usuwa obiekt ze szczytu stosu i zwraca ten sam obiekt. Rzuca Wyjątek pustego stosu jeśli stos jest pusty.
Składnia
public E pop()
Zwroty: Zwraca obiekt znajdujący się na szczycie stosu.
Zaimplementujmy stos w programie Java i wykonaj operacje push i pop.
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); } }
Wyjście:
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]
Metoda Peek() klasy stosu
Sprawdza element znajdujący się na górze stosu. Również rzuca Wyjątek pustego stosu jeśli stos jest pusty.
Składnia
public E peek()
Zwroty: Zwraca górne elementy stosu.
Zobaczmy przykład metody peek().
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); } }
Wyjście:
Stack: [Apple, Grapes, Mango, Orange] Element at the top of the stack: Orange
Metoda wyszukiwania() klasy stosu
Metoda przeszukuje obiekt na stosie od góry. Analizuje parametr, który chcemy wyszukać. Zwraca lokalizację obiektu na stosie opartą na wartości 1. Najwyższy obiekt stosu jest rozpatrywany w odległości 1.
program do dziedziczenia w Pythonie
Załóżmy, że o jest obiektem na stosie, którego chcemy szukać. Metoda zwraca odległość od wierzchołka stosu wystąpienia najbliższego wierzchołkowi stosu. To używa równa się() metoda przeszukiwania obiektu na stosie.
Składnia
public int search(Object o)
Parametr: o jest żądanym obiektem do przeszukania.
Zwroty: Zwraca położenie obiektu ze szczytu stosu. Jeśli zwróci -1, oznacza to, że obiektu nie ma na stosie.
Zobaczmy przykład metody search().
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); } }
Operacje na stosie Java
Rozmiar stosu
Rozmiar stosu możemy również określić za pomocą metody size() klasy Vector. Zwraca całkowitą liczbę elementów (rozmiar stosu) na stosie.
Składnia
public int size()
Zobaczmy przykład metody size() klasy Vector.
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); } }
Wyjście:
Is the stack empty or not? false The stack size is: 5
Iteruj elementy
Iteracja oznacza pobranie elementów stosu. Elementy stosu możemy pobierać trzema różnymi metodami:
- Za pomocą iterator() metoda
- Za pomocą dla każdego() metoda
- Za pomocą listaIterator() metoda
Korzystanie z metody iterator().
Jest to metoda interfejsu Iteratora. Zwraca iterator po elementach stosu. Przed użyciem metody iterator() zaimportuj plikjava.util.Iteratorpakiet.
Składnia
Iterator iterator()
Wykonajmy iterację po stosie.
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); } } }
Wyjście:
zamień całą Javę
BMW Audi Ferrari Bugatti Jaguar
Korzystanie z metody forEach().
Java udostępnia metodę forEach() umożliwiającą iterację elementów. Metoda jest zdefiniowana w Iterowalne I Strumień interfejs.
Składnia
default void forEach(Consumeraction)
Wykonajmy iterację po stosie za pomocą metody forEach().
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); }); } }
Wyjście:
Iteration over the stack using forEach() Method: 119 203 988
Korzystanie z metody listIterator().
Ta metoda zwraca iterator listy po elementach wspomnianej listy (w kolejności), zaczynając od określonej pozycji na liście. Iteruje stos od góry do dołu.
Składnia
ListIterator listIterator(int index)
Parametr: Metoda analizuje parametr o nazwie indeks.
Zwroty: Ta metoda zwraca iterator listy po elementach w kolejności.
Wyjątek: Rzuca Wyjątek IndexOutOfBounds jeśli indeks jest poza zakresem.
Wykonajmy iterację po stosie za pomocą metody listIterator().
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); } } }
Wyjście:
Iteration over the Stack from top to bottom: 988 203 119