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.
Toljuk a verembe rendre 20, 13, 89, 90, 11, 45, 18-at.
Távolítsuk el a (pop) 18-at, 45-öt és 11-et a veremből.
Üres köteg: Ha a veremnek nincs eleme, az an üres verem . Ha a verem üres, a legfelső változó értéke -1.
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
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.
A következő táblázat a felső különböző értékeit mutatja.
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.
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
Stack Class search() Method
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