logo

Stos Java

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.

Stos Java

Włóżmy odpowiednio 20, 13, 89, 90, 11, 45, 18 na stos.

Stos Java

Usuńmy (pop) 18, 45 i 11 ze stosu.

Stos Java

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
Stos Java

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
Stos Java

Kiedy zdejmujemy element ze stosu, wartość top wynosi spadła o 1 . Na poniższym rysunku wyskoczyliśmy 9.

Stos Java

Poniższa tabela przedstawia różne wartości górne.

Stos Java

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.

Stos Java

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 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