logo

Java Stack

A Kazal egy lineáris adatstruktúra, amely az objektumok gyűjteményének tárolására szolgál. Azon alapul Utoljára be, elsőként ki (LIFO). Java gyűjtemény A keretrendszer számos interfészt és osztályt biztosít az objektumok gyűjteményének tárolására. Ezek egyike a Stack osztály amely különféle műveleteket biztosít, például push, pop, keresés stb.

Ebben a részben a Java Stack osztály , annak mód, és végrehajtani a verem adatszerkezete a Java program . Mielőtt azonban áttérne a Java Stack osztályra, tekintse át gyorsan a verem működését.

A verem adatszerkezet a két legfontosabb művelettel rendelkezik nyom és pop . A push művelet beszúr egy elemet a verembe, a pop művelet pedig eltávolít egy elemet a verem tetejéről. Lássuk, hogyan működnek a veremben.

Java Stack

Toljuk a verembe rendre 20, 13, 89, 90, 11, 45, 18-at.

Java Stack

Távolítsuk el a (pop) 18-at, 45-öt és 11-et a veremből.

Java Stack

Üres köteg: Ha a veremnek nincs eleme, az an üres verem . Ha a verem üres, a legfelső változó értéke -1.

Java Stack

Amikor egy elemet tolunk a verembe, a teteje az 1-gyel nőtt . A következő ábrán

  • Nyomja 12, felső = 0
  • Nyomja 6, felső = 1
  • Nyomja 9, felső = 2
Java Stack

Amikor kidobunk egy elemet a veremből, a top értéke a következő 1-el csökkent . A következő ábrán 9-et mutattunk be.

Java Stack

A következő táblázat a felső különböző értékeit mutatja.

Java Stack

Java Stack osztály

Java nyelven, Kazal egy osztály, amely a Collection keretrendszer alá esik, amely kiterjeszti a Vektor osztály. Ezenkívül interfészt is megvalósít Lista, Gyűjtemény, Iterálható, Klónozható, Sorosozható. Ez a LIFO objektumok halmazát képviseli. A Stack osztály használata előtt importálnunk kell ajava.utilcsomag. A veremosztály a Collections keretrendszer hierarchiájában van elrendezve, az alábbiak szerint.

Java Stack

Stack Class Constructor

A Stack osztály csak a alapértelmezett konstruktor ami üres köteget hoz létre.

 public Stack() 

Verem létrehozása

Ha vermet akarunk létrehozni, először importáljuk ajava.utilcsomagot, és hozzon létre egy objektumot a Stack osztályból.

 Stack stk = new Stack(); 

Vagy

 Stack stk = new Stack(); 

Ahol a típus a verem típusát jelöli, például Integer, String stb.

A verem osztály módszerei

A veremben push, pop, peek és keresés műveleteket végezhetünk. A Java Stack osztály főleg öt módszert biztosít ezeknek a műveleteknek a végrehajtására. Ezzel együtt az összes módszert is biztosítja a Java Vector osztály .

Módszer Módosító és típus Módszer leírása
üres() logikai érték A módszer ellenőrzi, hogy a verem üres-e vagy sem.
push (E elem) ÉS A metódus egy elemet tol (beszúr) a verem tetejére.
pop() ÉS A metódus eltávolít egy elemet a verem tetejéről, és ugyanazt az elemet adja vissza, mint az adott függvény értékét.
kandikál() ÉS A módszer a verem legfelső elemét nézi anélkül, hogy eltávolítaná azt.
keresés (O-objektum) int A metódus megkeresi a megadott objektumot, és visszaadja az objektum pozícióját.

Veremosztály üres() Metódus

A üres() A Stack osztály metódusa ellenőrizze, hogy a verem üres-e vagy sem. Ha a verem üres, akkor igaz, egyébként false értéket ad vissza. Használhatjuk a Vector osztály isEmpty() metódusát is.

Szintaxis

 public boolean empty() 

Visszaküldés: A metódus igaz értéket ad vissza, ha a verem üres, egyébként false értéket ad vissza.

A következő példában létrehoztuk a Stack osztály egy példányát. Ezt követően kétszer meghívtuk az üres() metódust. Az első alkalommal, amikor visszatér igaz mert egyetlen elemet sem toltunk a verembe. Ezt követően az elemeket a verembe toltuk. Ismét meghívtuk az üres() metódust, amely visszatér hamis mert a verem nem üres.

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

Kimenet:

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

Stack Class push() metódus

A módszer beszúr egy elemet a verem tetejére. Ugyanúgy működik, mint a Vector osztály addElement(item) metódusa. Paramétert ad át tétel hogy a verembe tolják.

Szintaxis

 public E push(E item) 

Paraméter: Egy elem, amelyet a köteg tetejére kell tolni.

Visszaküldés: A metódus azt az argumentumot adja vissza, amelyet paraméterként adtunk át.

Stack Class pop() metódus

A metódus eltávolít egy objektumot a verem tetején, és ugyanazt az objektumot adja vissza. Ez dob EmptyStackException ha a verem üres.

Szintaxis

 public E pop() 

Visszaküldés: Egy olyan objektumot ad vissza, amely a verem tetején található.

Valósítsuk meg a veremet egy Java programban, és hajtsunk végre push és pop műveleteket.

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

Kimenet:

 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() metódus

Azt az elemet nézi, amely a verem tetején található. Az is dob EmptyStackException ha a verem üres.

Szintaxis

 public E peek() 

Visszaküldés: Visszaadja a verem legfelső elemeit.

Lássunk egy példát a peek() metódusra.

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

Kimenet:

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

A metódus felülről keresi az objektumot a veremben. Elemez egy paramétert, amelyet keresni akarunk. Visszaadja az objektum 1 alapú helyét a veremben. A verem legfelső tárgyát az 1-es távolságban tekintjük.

Tegyük fel, hogy az o egy objektum a veremben, amelyet keresni akarunk. A metódus a verem tetejétől a verem tetejéhez legközelebb eső előfordulás távolságát adja vissza. Használja egyenlő () metódus egy objektum megkeresésére a veremben.

Szintaxis

 public int search(Object o) 

Paraméter: o a keresendő objektum.

Visszaküldés: Visszaadja az objektum helyét a verem tetejéről. Ha -1 értéket ad vissza, az azt jelenti, hogy az objektum nincs a veremben.

Lássunk egy példát a search() metódusra.

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 veremműveletek

A verem mérete

A verem méretét a Vector osztály size() metódusával is megtalálhatjuk. A veremben lévő elemek teljes számát (a verem méretét) adja vissza.

Szintaxis

 public int size() 

Lássunk egy példát a Vector osztály size() metódusára.

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

Kimenet:

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

Elemek iterálása

Az iteráció a verem elemeinek lekérését jelenti. A verem elemeit három különböző módszerrel tudjuk lekérni:

  • Használata iterátor() Módszer
  • Használata az egyes() Módszer
  • Használata listIterator() Módszer

Az iterator() metódus használata

Ez az Iterator interfész módszere. Egy iterátort ad vissza a verem elemei felett. Az iterator() metódus használata előtt importálja ajava.util.Iteratorcsomag.

Szintaxis

 Iterator iterator() 

Végezzünk el egy iterációt a verem felett.

StackIterationExample1.java

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

Kimenet:

 BMW Audi Ferrari Bugatti Jaguar 

A forEach() metódus használata

A Java egy forEach() metódussal iterál az elemeken. A módszert a Iterálható és Folyam felület.

Szintaxis

 default void forEach(Consumeraction) 

Iteráljunk a verem felett a forEach() metódussal.

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

Kimenet:

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

A listIterator() metódus használata

Ez a metódus egy lista iterátort ad vissza az említett lista elemei felett (sorrendben), a lista megadott helyétől kezdve. A verem felülről lefelé haladva iterálja.

Szintaxis

 ListIterator listIterator(int index) 

Paraméter: A metódus elemzi a paramétert index.

Visszaküldés: Ez a metódus egy listaiterátort ad vissza az elemek felett, sorban.

Kivétel: Ez dob IndexOutOfBoundsException ha az index tartományon kívül esik.

Iteráljunk a verem felett a listIterator() metódussal.

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

Kimenet:

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