The krūva yra linijinė duomenų struktūra, naudojama objektų kolekcijai saugoti. Jis remiasi Paskutinis-pirmas-out (LIFO). Java kolekcija sistema suteikia daug sąsajų ir klasių objektų kolekcijai saugoti. Vienas iš jų yra Stack klasė kuri teikia įvairias operacijas, tokias kaip stumdymas, pop, paieška ir kt.
Šiame skyriuje aptarsime Java Stack klasė , jos metodai, ir įgyvendinti kamino duomenų struktūra a Java programa . Tačiau prieš pereidami prie „Java Stack“ klasės, greitai peržiūrėkite, kaip dėklas veikia.
Kamino duomenų struktūra turi dvi svarbiausias operacijas stumti ir pop . Stūmimo operacija įterpia elementą į krūvą, o iššokimo operacija pašalina elementą iš krūvos viršaus. Pažiūrėkime, kaip jie veikia ant krūvos.
Į steką įstumkime atitinkamai 20, 13, 89, 90, 11, 45, 18.
preg_match
Išimkime (išryškinkime) 18, 45 ir 11 iš krūvos.
Tuščias krūvas: Jei krūva neturi elemento, vadinama an tuščias kaminas . Kai krūva tuščia, viršutinio kintamojo reikšmė yra -1.
Kai įstumiame elementą į krūvą, viršuje yra padidintas 1 . Toliau pateiktame paveikslėlyje
- Paspauskite 12, viršuje = 0
- Paspauskite 6, viršuje = 1
- Paspauskite 9, viršuje = 2
Kai iškeliame elementą iš krūvos, top reikšmė yra sumažėjo 1 . Toliau esančiame paveikslėlyje pavaizdavome 9.
Toliau pateiktoje lentelėje parodytos skirtingos viršutinės dalies reikšmės.
Java Stack klasė
Java, Stack yra klasė, kuri patenka į rinkinio sistemą, kuri išplečia Vektorius klasė. Jis taip pat įgyvendina sąsajas Sąrašas, rinkinys, kartojamas, klonuojamas, serializuojamas. Tai reiškia LIFO objektų krūvą. Prieš naudodami Stack klasę, turime importuotijava.utilpaketą. Kiemo klasė išdėstyta kolekcijų sistemos hierarchijoje, kaip parodyta toliau.
Stack klasės konstruktorius
„Stack“ klasėje yra tik numatytasis konstruktorius kuri sukuria tuščią krūvą.
public Stack()
Stacko kūrimas
Jei norime sukurti krūvą, pirmiausia importuokitejava.utilpaketą ir sukurti Stack klasės objektą.
Stack stk = new Stack();
Arba
Stack stk = new Stack();
Kur tipas reiškia krūvos tipą, pvz., Integer, String ir kt.
Stack klasės metodai
Mes galime atlikti stūmimo, iššokimo, žvilgtelėjimo ir paieškos operacijas ant krūvos. „Java Stack“ klasė suteikia daugiausia penkis metodus šioms operacijoms atlikti. Be to, ji taip pat pateikia visus metodus Java Vector klasė .
Metodas | Modifikatorius ir tipas | Metodo aprašymas |
---|---|---|
tuščia() | loginis | Metodas patikrina, ar krūva tuščia, ar ne. |
stumti (E elementas) | IR | Metodas stumia (įterpia) elementą į krūvos viršų. |
pop () | IR | Metodas pašalina elementą iš krūvos viršaus ir grąžina tą patį elementą kaip ir tos funkcijos reikšmę. |
žvilgtelėti () | IR | Metodas žiūri į viršutinį krūvos elementą jo nepašalinant. |
paieška (O objektas) | tarpt | Metodas ieško nurodyto objekto ir grąžina objekto padėtį. |
Stack Class tuščias() Metodas
The tuščia() Stack klasės metodas patikrinkite, ar kaminas tuščias, ar ne. Jei krūva tuščia, grąžinama tiesa, kitu atveju – false. Taip pat galime naudoti Vector klasės metodą isEmpty().
Sintaksė
public boolean empty()
Grąžinimai: Metodas grąžina teisingą, jei krūva tuščia, kitu atveju grąžina false.
Šiame pavyzdyje sukūrėme „Stack“ klasės egzempliorių. Po to du kartus iškvietėme tuščią () metodą. Pirmą kartą grįžta tiesa nes neįstūmėme nė vieno elemento į krūvą. Po to elementus įstūmėme į krūvą. Vėlgi, mes panaudojome tuščią () metodą, kuris grąžina klaidinga nes rietuvė nėra tuščia.
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); } }
Išvestis:
Is the stack empty? true Elements in Stack: [78, 113, 90, 120] Is the stack empty? false
Stack Class push() metodas
Šis metodas įterpia elementą ant krūvos viršaus. Jis veikia taip pat, kaip ir Vector klasės metodas addElement(item). Jis perduoda parametrą daiktas kad būtų įstumtas į krūvą.
Sintaksė
public E push(E item)
Parametras: Prekė, kurią reikia stumti ant krūvos viršaus.
Grąžinimai: Metodas grąžina argumentą, kurį perdavėme kaip parametrą.
Stack Class pop() metodas
Metodas pašalina objektą krūvos viršuje ir grąžina tą patį objektą. Tai meta EmptyStackException jei kaminas tuščias.
Sintaksė
public E pop()
Grąžinimai: Jis grąžina objektą, kuris yra krūvos viršuje.
Įdiegkime stacką Java programoje ir atliksime push ir pop operacijas.
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); } }
Išvestis:
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() metodas
Jis žiūri į elementą, kuris yra krūvos viršuje. Taip pat meta EmptyStackException jei kaminas tuščias.
Sintaksė
public E peek()
Grąžinimai: Tai grąžina viršutinius krūvos elementus.
Pažiūrėkime į peek() metodo pavyzdį.
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); } }
Išvestis:
Stack: [Apple, Grapes, Mango, Orange] Element at the top of the stack: Orange
Stack Class search() Metodas
Metodas ieško objekto krūvoje iš viršaus. Jis analizuoja parametrą, kurio norime ieškoti. Jis grąžina objekto vietą krūvoje pagal 1. Viršutinis krūvos objektas laikomas 1 atstumu.
Tarkime, o yra krūvoje esantis objektas, kurio norime ieškoti. Metodas grąžina atstumą nuo krūvos viršaus įvykio, kuris yra arčiausiai krūvos viršaus. Tai naudoja lygus () būdas ieškoti objekto krūvoje.
Sintaksė
public int search(Object o)
Parametras: o yra norimas ieškoti objektas.
Grąžinimai: Jis grąžina objekto vietą iš krūvos viršaus. Jei jis grąžina -1, tai reiškia, kad objekto nėra krūvoje.
Pažiūrėkime paieškos() metodo pavyzdį.
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 operacijos
Krūvos dydis
Taip pat galime rasti krūvos dydį naudodami Vector klasės metodą size(). Jis grąžina bendrą elementų skaičių (dėklo dydį) krūvoje.
Sintaksė
public int size()
Pažiūrėkime Vector klasės metodo size() pavyzdį.
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); } }
Išvestis:
pandos standartinis nuokrypis
Is the stack empty or not? false The stack size is: 5
Pakartokite elementus
Iteruoti reiškia gauti krūvos elementus. Kiemo elementus galime gauti naudodami tris skirtingus metodus:
- Naudojant iteratorius () Metodas
- Naudojant kiekvienam() Metodas
- Naudojant listIterator() Metodas
Naudojant iteratoriaus() metodą
Tai yra Iteratoriaus sąsajos metodas. Jis grąžina iteratorių virš krūvos elementų. Prieš naudodami iterator() metodą, importuokitejava.util.Iteratorpaketą.
Sintaksė
Iterator iterator()
Atlikime iteraciją per krūvą.
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); } } }
Išvestis:
BMW Audi Ferrari Bugatti Jaguar
ForEach() metodo naudojimas
„Java“ suteikia „forEach()“ metodą elementams kartoti. Metodas yra apibrėžtas Pakartojama ir Srautas sąsaja.
Sintaksė
default void forEach(Consumeraction)
Pakartokime krūvą naudodami forEach() metodą.
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); }); } }
Išvestis:
Iteration over the stack using forEach() Method: 119 203 988
Naudojant listIterator() metodą
Šis metodas grąžina sąrašo iteratorių virš elementų minėtame sąraše (iš eilės), pradedant nuo nurodytos sąrašo vietos. Jis kartoja krūvą iš viršaus į apačią.
Sintaksė
ListIterator listIterator(int index)
Parametras: Metodas analizuoja parametrą pavadinimu indeksas.
Grąžinimai: Šis metodas grąžina sąrašo iteratorių per elementus iš eilės.
Išimtis: Tai meta IndexOutOfBoundsException jei indeksas yra už diapazono ribų.
Pakartokime krūvą naudodami listIterator() metodą.
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); } } }
Išvestis:
Iteration over the Stack from top to bottom: 988 203 119