logo

Java Stack

The zásobník je lineární datová struktura, která se používá k ukládání kolekce objektů. Je to založeno na Last-In-First-Out (LIFO). Kolekce Java framework poskytuje mnoho rozhraní a tříd pro ukládání kolekce objektů. Jedním z nich je Třída zásobníku který poskytuje různé operace, jako je push, pop, search atd.

V této části budeme diskutovat o Třída Java Stack , své metody, a nářadí datová struktura zásobníku v a Java program . Než se však přesunete do třídy Java Stack, získejte rychlý přehled o tom, jak zásobník funguje.

Struktura dat zásobníku má dvě nejdůležitější operace, které jsou TAM a pop . Operace push vloží prvek do stohu a operace pop odebere prvek z vrcholu stohu. Podívejme se, jak fungují na zásobníku.

Java Stack

Zatlačte 20, 13, 89, 90, 11, 45, 18, respektive do zásobníku.

Java Stack

Odeberme (vyskočí) 18, 45 a 11 ze zásobníku.

Java Stack

Prázdný zásobník: Pokud zásobník neobsahuje žádný prvek, je znám jako an prázdný zásobník . Když je zásobník prázdný, hodnota horní proměnné je -1.

Java Stack

Když zatlačíme prvek do zásobníku, vršek je zvýšil o 1 . Na následujícím obrázku

  • Stiskněte 12, nahoře = 0
  • Stiskněte 6, nahoře=1
  • Stiskněte 9, nahoře=2
Java Stack

Když vyjmeme prvek ze zásobníku, hodnota top je snížil o 1 . Na následujícím obrázku jsme zobrazili 9.

Java Stack

Následující tabulka ukazuje různé hodnoty vrcholu.

Java Stack

Třída Java Stack

v Javě, Zásobník je třída, která spadá pod rámec Collection, který rozšiřuje Vektor třída. Také implementuje rozhraní Seznam, kolekce, iterovatelný, klonovatelný, serializovatelný. Představuje LIFO zásobník objektů. Před použitím třídy Stack musíme importovatjava.utilbalík. Třída zásobníku uspořádaná v hierarchii rámce Collections, jak je znázorněno níže.

Java Stack

Konstruktor třídy zásobníku

Třída Stack obsahuje pouze výchozí konstruktor čímž vznikne prázdný zásobník.

 public Stack() 

Vytvoření zásobníku

Pokud chceme vytvořit zásobník, nejprve importujte souborjava.utilbalíček a vytvořte objekt třídy Stack.

 Stack stk = new Stack(); 

Nebo

 Stack stk = new Stack(); 

Kde typ označuje typ zásobníku, jako je Integer, String atd.

Metody třídy Stack

Na zásobníku můžeme provádět operace push, pop, peek a search. Třída Java Stack poskytuje hlavně pět metod k provádění těchto operací. Spolu s tím také poskytuje všechny metody Java Vector třída .

Metoda Modifikátor a typ Popis metody
prázdný() booleovský Metoda kontroluje, zda je zásobník prázdný nebo ne.
push (položka E) A Metoda vloží (vloží) prvek na vrchol zásobníku.
pop() A Metoda odebere prvek z horní části zásobníku a vrátí stejný prvek, jako je hodnota této funkce.
nahlédnout () A Metoda se dívá na horní prvek zásobníku, aniž by jej odstranil.
hledat (objekt o) int Metoda prohledá zadaný objekt a vrátí polohu objektu.

Metoda Stack Class empty().

The prázdný() metoda třídy Stack zkontrolujte, zda je zásobník prázdný nebo ne. Pokud je zásobník prázdný, vrátí hodnotu true, jinak vrátí hodnotu false. Můžeme také použít metodu isEmpty() třídy Vector .

Syntax

 public boolean empty() 

Vrácení: Metoda vrací true, pokud je zásobník prázdný, jinak vrací false.

V následujícím příkladu jsme vytvořili instanci třídy Stack. Poté jsme metodu empty() vyvolali dvakrát. Poprvé se vrací skutečný protože jsme do zásobníku nevložili žádný prvek. Poté jsme prvky vložili do zásobníku. Opět jsme vyvolali metodu empty(), která vrací Nepravdivé protože zásobník není prázdný.

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); } } 

Výstup:

 Is the stack empty? true Elements in Stack: [78, 113, 90, 120] Is the stack empty? false 

Metoda push() třídy zásobníku

Metoda vloží položku na vrchol zásobníku. Funguje stejně jako metoda addElement(item) třídy Vector. Předá parametr položka k zasunutí do stohu.

Syntax

 public E push(E item) 

Parametr: Položka, která se má vytlačit na horní část stohu.

Vrácení: Metoda vrací argument, který jsme předali jako parametr.

Metoda Stack Class pop().

Metoda odstraní objekt v horní části zásobníku a vrátí stejný objekt. To hází EmptyStackException pokud je zásobník prázdný.

Syntax

hashtable java
 public E pop() 

Vrácení: Vrací objekt, který je v horní části zásobníku.

Pojďme implementovat zásobník v programu Java a provádět operace push a 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); } } 

Výstup:

 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() třídy zásobníku

Dívá se na prvek, který je v zásobníku nahoře. To také hází EmptyStackException pokud je zásobník prázdný.

Syntax

 public E peek() 

Vrácení: Vrátí horní prvky zásobníku.

Podívejme se na příklad 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); } } 

Výstup:

 Stack: [Apple, Grapes, Mango, Orange] Element at the top of the stack: Orange 

Metoda prohledává objekt v zásobníku shora. Analyzuje parametr, který chceme hledat. Vrátí umístění objektu v zásobníku založené na 1. Nejvyšší objekt v hromádce je uvažován ve vzdálenosti 1.

Předpokládejme, že o je objekt v zásobníku, který chceme hledat. Metoda vrací vzdálenost od vrcholu zásobníku výskytu nejbližšího vrcholu zásobníku. Používá rovná se() metoda pro hledání objektu v zásobníku.

Syntax

 public int search(Object o) 

Parametr: o je požadovaný objekt, který má být prohledán.

Vrácení: Vrátí umístění objektu z horní části zásobníku. Pokud vrátí -1, znamená to, že objekt není v zásobníku.

Podívejme se na příklad 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); } } 

Operace Java Stack

Velikost zásobníku

Velikost zásobníku můžeme také zjistit pomocí metody size() třídy Vector . Vrací celkový počet prvků (velikost zásobníku) v zásobníku.

Syntax

 public int size() 

Podívejme se na příklad metody size() třídy 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); } } 

Výstup:

 Is the stack empty or not? false The stack size is: 5 

Iterovat prvky

Iterovat znamená načíst prvky zásobníku. Prvky zásobníku můžeme načíst třemi různými způsoby:

  • Použitím iterátor() Metoda
  • Použitím pro každého() Metoda
  • Použitím listIterator() Metoda

Použití metody iterator().

Je to metoda rozhraní Iterator. Vrací iterátor nad prvky v zásobníku. Před použitím metody iterator() naimportujte souborjava.util.Iteratorbalík.

Syntax

 Iterator iterator() 

Proveďme iteraci nad zásobníkem.

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); } } } 

Výstup:

 BMW Audi Ferrari Bugatti Jaguar 

Použití metody forEach().

Java poskytuje metodu forEach() pro iteraci prvků. Metoda je definována v Iterovatelné a Proud rozhraní.

Syntax

 default void forEach(Consumeraction) 

Pojďme iterovat přes zásobník 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); }); } } 

Výstup:

 Iteration over the stack using forEach() Method: 119 203 988 

Použití metody listIterator().

Tato metoda vrací iterátor seznamu nad prvky ve zmíněném seznamu (v pořadí), počínaje od zadané pozice v seznamu. Iteruje zásobník shora dolů.

generovat náhodné číslo v java

Syntax

 ListIterator listIterator(int index) 

Parametr: Metoda analyzuje parametr s názvem index.

Vrácení: Tato metoda vrací iterátor seznamu nad prvky v pořadí.

Výjimka: To hází IndexOutOfBoundsException pokud je index mimo rozsah.

Pojďme iterovat přes zásobník 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); } } } 

Výstup:

 Iteration over the Stack from top to bottom: 988 203 119