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.
V sklad potisnimo 20, 13, 89, 90, 11, 45, 18.
Odstranimo (izstrelimo) 18, 45 in 11 iz sklada.
Prazen sklad: Če sklad nima nobenega elementa, je znan kot an prazen sklad . Ko je sklad prazen, je vrednost zgornje spremenljivke -1.
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
Ko odstranimo element iz sklada, je vrednost vrha zmanjšal za 1 . Na naslednji sliki smo izstrelili 9.
Naslednja tabela prikazuje različne vrednosti vrha.
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.
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 Stack Class search().
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