logo

Java Stack

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.

Java Stack

Į steką įstumkime atitinkamai 20, 13, 89, 90, 11, 45, 18.

preg_match
Java Stack

Išimkime (išryškinkime) 18, 45 ir 11 iš krūvos.

Java Stack

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.

Java Stack

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
Java Stack

Kai iškeliame elementą iš krūvos, top reikšmė yra sumažėjo 1 . Toliau esančiame paveikslėlyje pavaizdavome 9.

Java Stack

Toliau pateiktoje lentelėje parodytos skirtingos viršutinės dalies reikšmės.

Java Stack

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.

Java Stack

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 

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