logo

Java stack

The stog je linearna struktura podataka koja se koristi za pohranjivanje zbirke objekata. Temelji se na Zadnji ušao prvi izašao (LIFO). Java zbirka okvir pruža mnoga sučelja i klase za pohranu zbirke objekata. Jedan od njih je Stack klasa koji pruža različite operacije kao što su push, pop, search itd.

U ovom odjeljku raspravljat ćemo o Java Stack klasa , njegovo metode, i implementirati struktura podataka stog u a Java program . Ali prije nego prijeđete na klasu Java Stack, brzo pogledajte kako stog radi.

Struktura podataka stog ima dvije najvažnije operacije koje su gurnuti i pop . Operacija push umeće element u stog, a operacija pop uklanja element s vrha stoga. Pogledajmo kako rade na stogu.

Java stack

Gurnimo redom 20, 13, 89, 90, 11, 45, 18 u stog.

Java stack

Uklonimo (iskočimo) 18, 45 i 11 sa snopa.

Java stack

Prazan stog: Ako stog nema nijedan element, poznat je kao an prazan stog . Kada je stog prazan, vrijednost gornje varijable je -1.

Java stack

Kada gurnemo element u stog vrh je povećan za 1 . Na sljedećoj slici,

  • Pritisnite 12, vrh=0
  • Pritisnite 6, vrh=1
  • Pritisnite 9, vrh=2
Java stack

Kada izbacimo element iz hrpe, vrijednost vrha je smanjen za 1 . Na sljedećoj slici izdvojili smo 9.

Java stack

Sljedeća tablica prikazuje različite vrijednosti vrha.

Java stack

Java stack klasa

U Javi, Stog je klasa koja potpada pod okvir zbirke koji proširuje Vektor razreda. Također implementira sučelja Popis, zbirka, iterabilnost, kloniranje, serijalizacija. Predstavlja LIFO hrpu objekata. Prije korištenja klase Stack, moramo uvestijava.utilpaket. Klasa hrpa raspoređena u hijerarhiji okvira zbirki, kao što je prikazano u nastavku.

Java stack

Stack Class Constructor

Stack klasa sadrži samo zadani konstruktor koji stvara prazan stog.

string u json java
 public Stack() 

Stvaranje hrpe

Ako želimo stvoriti stog, prvo uvezimojava.utilpakirati i kreirati objekt klase Stack.

 Stack stk = new Stack(); 

Ili

 Stack stk = new Stack(); 

Gdje tip označava vrstu stoga kao što je cijeli broj, niz itd.

Metode klase Stack

Možemo izvesti operacije push, pop, peek i search na stogu. Klasa Java Stack pruža uglavnom pet metoda za izvođenje ovih operacija. Uz to, također nudi sve metode Java Vector klasa .

metoda Modifikator i vrsta Opis metode
prazan() Booleov Metoda provjerava je li stog prazan ili ne.
guranje (E stavka) I Metoda gura (ubacuje) element na vrh hrpe.
pop() I Metoda uklanja element s vrha stoga i vraća isti element kao vrijednost te funkcije.
zaviriti() I Metoda gleda na gornji element hrpe bez njegovog uklanjanja.
pretraživanje (objekt o) int Metoda pretražuje navedeni objekt i vraća položaj objekta.

Stack Class empty() metoda

The prazan() metoda klase Stack provjerava je li stog prazan ili ne. Ako je stog prazan, vraća true, inače vraća false. Također možemo koristiti metodu isEmpty() klase Vector.

Sintaksa

 public boolean empty() 

Povratak: Metoda vraća true ako je stog prazan, inače vraća false.

U sljedećem primjeru stvorili smo instancu klase Stack. Nakon toga, pozvali smo metodu empty() dva puta. Prvi put se vraća pravi jer nijedan element nismo gurnuli u stog. Nakon toga smo gurnuli elemente u stog. Opet smo pozvali metodu empty() koja vraća lažno jer stog nije prazan.

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

Izlaz:

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

Stack Class push() metoda

Metoda umeće stavku na vrh hrpe. Radi isto kao i metoda addElement(item) klase Vector. Prolazi parametar artikal da se gurne u stog.

Sintaksa

 public E push(E item) 

Parametar: Stavka koju treba gurnuti na vrh hrpe.

Povratak: Metoda vraća argument koji smo proslijedili kao parametar.

Stack Class pop() metoda

Metoda uklanja objekt na vrhu stoga i vraća isti objekt. Baca se EmptyStackException ako je stog prazan.

Sintaksa

 public E pop() 

Povratak: Vraća objekt koji je na vrhu stoga.

Implementirajmo stog u Java program i izvodimo push i pop operacije.

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

Izlaz:

 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] 

Stack Class peek() metoda

Gleda element koji je na vrhu u nizu. Također baca EmptyStackException ako je stog prazan.

Sintaksa

 public E peek() 

Povratak: Vraća gornje elemente stoga.

Pogledajmo primjer metode peek().

kako pretvoriti iz niza u int

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

Izlaz:

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

Metoda pretražuje objekt u hrpi od vrha. Raščlanjuje parametar koji želimo tražiti. Vraća lokaciju objekta u stogu temeljenu na 1. Najviši objekt hrpe smatra se na udaljenosti 1.

Pretpostavimo da je o objekt u stogu koji želimo tražiti. Metoda vraća udaljenost od vrha snopa pojavljivanja najbližeg vrhu snopa. Koristi se jednako() metoda za pretraživanje objekta u stogu.

Sintaksa

 public int search(Object o) 

Parametar: o je željeni objekt koji se traži.

Povratak: Vraća lokaciju objekta s vrha stoga. Ako vrati -1, to znači da objekt nije na stogu.

Pogledajmo primjer metode 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); } } 

Java Stack Operacije

Veličina hrpe

Također možemo pronaći veličinu hrpe pomoću metode size() klase Vector. Vraća ukupan broj elemenata (veličinu stoga) u stogu.

Sintaksa

 public int size() 

Pogledajmo primjer size() metode klase 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); } } 

Izlaz:

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

Ponavljanje elemenata

Iterirati znači dohvatiti elemente steka. Elemente hrpe možemo dohvatiti pomoću tri različite metode koje su sljedeće:

  • Korištenje iterator() metoda
  • Korištenje za svakoga() metoda
  • Korištenje listIterator() metoda

Korištenje metode iterator().

To je metoda sučelja Iteratora. Vraća iterator preko elemenata u stogu. Prije korištenja metode iterator() uvezitejava.util.Iteratorpaket.

Sintaksa

 Iterator iterator() 

Izvedimo iteraciju nad stogom.

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

Izlaz:

 BMW Audi Ferrari Bugatti Jaguar 

Korištenje metode forEach().

Java nudi metodu forEach() za ponavljanje elemenata. Metoda je definirana u Iterable i Stream sučelje.

popis java

Sintaksa

 default void forEach(Consumeraction) 

Iterirajmo po stogu pomoću metode 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); }); } } 

Izlaz:

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

Korištenje metode listIterator().

Ova metoda vraća iterator popisa preko elemenata u spomenutom popisu (u nizu), počevši od navedene pozicije na popisu. Ponavlja stog od vrha do dna.

Sintaksa

 ListIterator listIterator(int index) 

Parametar: Metoda analizira parametar pod nazivom indeks.

Povratak: Ova metoda vraća iterator popisa preko elemenata, u nizu.

Iznimka: Baca se IndexOutOfBoundsException ako je indeks izvan raspona.

Iterirajmo po stogu pomoću metode 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); } } } 

Izlaz:

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