logo

Java Stack

The kup je linearna podatkovna struktura, ki se uporablja za shranjevanje zbirke predmetov. Temelji na Zadnji vstopi prvi ven (LIFO). Zbirka Java Framework ponuja številne vmesnike in razrede za shranjevanje zbirke objektov. Eden od njih je Razred sklada ki omogoča različne operacije, kot so potiskanje, pop, iskanje itd.

V tem razdelku bomo razpravljali o Razred Java Stack , svoje metode, in izvajati strukturo podatkov sklada v a Java program . Toda preden se premaknete na razred Java Stack, si na hitro oglejte, kako sklad deluje.

Podatkovna struktura sklada ima dve najpomembnejši operaciji, to sta potiskati in pop . Operacija potiskanja vstavi element v sklad, operacija pop pa odstrani element z vrha sklada. Poglejmo, kako delujejo na skladu.

Java Stack

V sklad potisnimo 20, 13, 89, 90, 11, 45, 18.

Java Stack

Odstranimo (izstrelimo) 18, 45 in 11 iz sklada.

Java Stack

Prazen sklad: Če sklad nima nobenega elementa, je znan kot an prazen sklad . Ko je sklad prazen, je vrednost zgornje spremenljivke -1.

Java Stack

Ko potisnemo element v sklad, je vrh povečala za 1 . Na naslednji sliki je

  • Potisnite 12, zgoraj = 0
  • Potisnite 6, zgoraj = 1
  • Potisnite 9, zgoraj = 2
Java Stack

Ko odstranimo element iz sklada, je vrednost vrha zmanjšal za 1 . Na naslednji sliki smo izstrelili 9.

Java Stack

Naslednja tabela prikazuje različne vrednosti vrha.

Java Stack

Java Stack Class

V Javi, Stack je razred, ki spada pod ogrodje zbirke, ki razširja Vektor razred. Izvaja tudi vmesnike Seznam, zbirka, možnost ponavljanja, možnost kloniranja, možnost serializacije. Predstavlja sklad objektov LIFO. Preden uporabimo razred Stack, moramo uvozitijava.utilpaket. Razred sklada, urejen v hierarhiji ogrodja zbirk, kot je prikazano spodaj.

Java Stack

Stack Class Constructor

Razred Stack vsebuje samo privzeti konstruktor ki ustvari prazen sklad.

 public Stack() 

Ustvarjanje sklada

Če želimo ustvariti sklad, najprej uvozimojava.utilpaket in ustvarite objekt razreda Stack.

 Stack stk = new Stack(); 

oz

 Stack stk = new Stack(); 

Kjer tip označuje vrsto sklada, kot je Integer, String itd.

int parseint

Metode razreda Stack

Na skladu lahko izvajamo operacije potiskanja, izpiranja, pokukanja in iskanja. Razred Java Stack ponuja predvsem pet metod za izvajanje teh operacij. Poleg tega ponuja tudi vse metode Razred Java Vector .

Metoda Modifikator in vrsta Opis metode
prazno() logično Metoda preveri, ali je sklad prazen ali ne.
potisni (E element) IN Metoda potisne (vstavi) element na vrh sklada.
pop() IN Metoda odstrani element z vrha sklada in vrne isti element kot vrednost te funkcije.
pokukati() IN Metoda pogleda zgornji element sklada, ne da bi ga odstranila.
iskanje (predmet o) int Metoda išče navedeni predmet in vrne položaj predmeta.

Metoda Stack Class empty().

The prazno() metoda razreda Stack preveri, ali je sklad prazen ali ne. Če je sklad prazen, vrne true, drugače vrne false. Uporabimo lahko tudi metodo isEmpty() razreda Vector.

Sintaksa

 public boolean empty() 

Vrne: Metoda vrne true, če je sklad prazen, sicer vrne false.

V naslednjem primeru smo ustvarili primerek razreda Stack. Po tem smo dvakrat poklicali metodo empty(). Prvič se vrne prav ker v sklad nismo potisnili nobenega elementa. Po tem smo potisnili elemente v sklad. Spet smo priklicali metodo empty(), ki vrne lažno ker sklad ni prazen.

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

Izhod:

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

Metoda razreda sklada push().

Metoda vstavi element na vrh sklada. Deluje enako kot metoda addElement(item) razreda Vector. Predaja parameter postavka potisniti v sklad.

Sintaksa

 public E push(E item) 

Parameter: Predmet, ki ga je treba potisniti na vrh sklada.

Vrne: Metoda vrne argument, ki smo ga posredovali kot parameter.

Metoda razreda sklada pop().

Metoda odstrani objekt na vrhu sklada in vrne isti objekt. Vrže EmptyStackException če je sklad prazen.

Sintaksa

 public E pop() 

Vrne: Vrne predmet, ki je na vrhu sklada.

Implementirajmo sklad v programu Java in izvajajmo operacije potiskanja in izpiranja.

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

Izhod:

 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 razreda sklada peek().

Pogleda element, ki je na vrhu v skladu. Prav tako meče EmptyStackException če je sklad prazen.

Sintaksa

 public E peek() 

Vrne: Vrne zgornje elemente sklada.

Oglejmo si primer metode 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); } } 

Izhod:

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

Metoda išče predmet v skladu od vrha. Razčleni parameter, ki ga želimo iskati. Vrne lokacijo predmeta v skladu na osnovi 1. Najvišji predmet sklada se obravnava na razdalji 1.

Recimo, da je o predmet v skladu, ki ga želimo iskati. Metoda vrne razdaljo od vrha sklada do pojava, ki je najbližji vrhu sklada. Uporablja se enako () metoda za iskanje predmeta v skladu.

Sintaksa

 public int search(Object o) 

Parameter: o je želeni predmet iskanja.

kakšna je velikost zaslona mojega monitorja

Vrne: Vrne lokacijo predmeta z vrha sklada. Če vrne -1, to pomeni, da objekta ni na skladu.

Oglejmo si primer 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); } } 

Operacije Java Stack

Velikost sklada

Velikost sklada lahko poiščemo tudi z uporabo metode size() razreda Vector. Vrne skupno število elementov (velikost sklada) v skladu.

Sintaksa

 public int size() 

Oglejmo si primer metode size() razreda 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); } } 

Izhod:

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

Ponovi elemente

Iteracija pomeni pridobivanje elementov sklada. Elemente sklada lahko pridobimo s tremi različnimi metodami, ki so naslednje:

  • Uporaba iterator() Metoda
  • Uporaba za vsakogar() Metoda
  • Uporaba listIterator() Metoda

Uporaba metode iterator().

Je metoda vmesnika Iterator. Vrne iterator nad elementi v skladu. Pred uporabo metode iterator() uvozitejava.util.Iteratorpaket.

Sintaksa

 Iterator iterator() 

Izvedimo iteracijo nad skladom.

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

Izhod:

 BMW Audi Ferrari Bugatti Jaguar 

Uporaba metode forEach().

Java ponuja metodo forEach() za ponavljanje elementov. Metoda je opredeljena v Ponovljivo in Tok vmesnik.

python inicializacijski seznam

Sintaksa

 default void forEach(Consumeraction) 

Ponavljajmo sklad z uporabo 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); }); } } 

Izhod:

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

Uporaba metode listIterator().

Ta metoda vrne iterator seznama nad elementi na omenjenem seznamu (zaporedoma), začenši na določenem mestu na seznamu. Ponavlja sklad od zgoraj navzdol.

Sintaksa

 ListIterator listIterator(int index) 

Parameter: Metoda razčleni parameter z imenom kazalo.

Vrne: Ta metoda vrne iterator seznama nad elementi v zaporedju.

Izjema: Vrže IndexOutOfBoundsException če je indeks izven obsega.

Ponovimo po skladu z metodo 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); } } } 

Izhod:

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