De stable er en lineær datastruktur som brukes til å lagre samlingen av objekter. Den er basert på Sist-inn-først-ut (LIFO). Java samling rammeverket gir mange grensesnitt og klasser for å lagre samlingen av objekter. En av dem er Stabelklasse som gir forskjellige operasjoner som push, pop, søk osv.
I denne delen vil vi diskutere Java Stack klasse , det er metoder, og implementere stabeldatastrukturen i en Java-program . Men før du flytter til Java Stack-klassen, ha en rask oversikt over hvordan stabelen fungerer.
Stabeldatastrukturen har de to viktigste operasjonene som er trykk og pop . Skyveoperasjonen setter et element inn i stabelen og pop-operasjonen fjerner et element fra toppen av stabelen. La oss se hvordan de fungerer på stabelen.
La oss skyve henholdsvis 20, 13, 89, 90, 11, 45, 18 inn i stabelen.
La oss fjerne (pop) 18, 45 og 11 fra stabelen.
Tom stabel: Hvis stabelen ikke har noe element er kjent som en tom stabel . Når stabelen er tom, er verdien av den øverste variabelen -1.
Når vi skyver et element inn i stabelen er toppen økt med 1 . I den følgende figuren,
- Trykk 12, topp=0
- Trykk 6, topp=1
- Trykk 9, topp=2
Når vi henter et element fra stabelen er verdien av topp redusert med 1 . I den følgende figuren har vi fått 9.
Tabellen nedenfor viser de forskjellige verdiene for toppen.
Java Stack Class
I Java, Stable er en klasse som faller inn under innsamlingsrammen som utvider Vektor klasse. Den implementerer også grensesnitt Liste, Samling, Itererbar, Klonbar, Serialiserbar. Den representerer LIFO-stabelen med objekter. Før vi bruker Stack-klassen, må vi importerejava.utilpakke. Stabelklassen ordnet i samlingsrammehierarkiet, som vist nedenfor.
Stack Class Constructor
Stack-klassen inneholder bare standard konstruktør som lager en tom stabel.
public Stack()
Opprette en stabel
Hvis vi vil lage en stabel, importerer du førstjava.utilpakke og opprette et objekt av Stack-klassen.
Stack stk = new Stack();
Eller
ubuntu bygge viktig
Stack stk = new Stack();
Hvor type angir stabeltypen som heltall, streng osv.
Metoder for stabelklassen
Vi kan utføre push, pop, peek og søkeoperasjoner på stabelen. Java Stack-klassen gir hovedsakelig fem metoder for å utføre disse operasjonene. Sammen med dette gir den også alle metodene til Java Vector klasse .
Metode | Modifikator og type | Metodebeskrivelse |
---|---|---|
tømme() | boolsk | Metoden sjekker at stabelen er tom eller ikke. |
push(E element) | OG | Metoden skyver (sett inn) et element på toppen av stabelen. |
pop() | OG | Metoden fjerner et element fra toppen av stabelen og returnerer det samme elementet som verdien av den funksjonen. |
kikke() | OG | Metoden ser på det øverste elementet i stabelen uten å fjerne det. |
søk (Objekt o) | int | Metoden søker i det angitte objektet og returnerer posisjonen til objektet. |
Stack Class empty() Metode
De tømme() metoden til Stack-klassen sjekk at stabelen er tom eller ikke. Hvis stabelen er tom, returnerer den sann, ellers returnerer den falsk. Vi kan også bruke isEmpty()-metoden til Vector-klassen .
Syntaks
public boolean empty()
Returnerer: Metoden returnerer true hvis stabelen er tom, ellers returnerer false.
I følgende eksempel har vi laget en forekomst av Stack-klassen. Etter det har vi påkalt tomme()-metoden to ganger. Første gang den kommer tilbake ekte fordi vi ikke har skjøvet noe element inn i stabelen. Etter det har vi dyttet elementer inn i stabelen. Igjen har vi påkalt den tomme() metoden som returnerer falsk fordi stabelen ikke er tom.
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); } }
Produksjon:
Is the stack empty? true Elements in Stack: [78, 113, 90, 120] Is the stack empty? false
Stack Class push() metode
Metoden setter inn et element på toppen av stabelen. Den fungerer på samme måte som metoden addElement(item)-metoden i Vector-klassen. Den passerer en parameter punkt som skal dyttes inn i stabelen.
c++ int til streng
Syntaks
public E push(E item)
Parameter: Et element som skal skyves på toppen av stabelen.
Returnerer: Metoden returnerer argumentet som vi har sendt som en parameter.
Stack Class pop() Metode
Metoden fjerner et objekt på toppen av stabelen og returnerer det samme objektet. Det kaster EmptyStackException hvis stabelen er tom.
Syntaks
public E pop()
Returnerer: Den returnerer et objekt som er på toppen av stabelen.
La oss implementere stabelen i et Java-program og utføre push- og pop-operasjoner.
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); } }
Produksjon:
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() Metode
Den ser på elementet som er øverst i stabelen. Det kaster også EmptyStackException hvis stabelen er tom.
Syntaks
public E peek()
Returnerer: Den returnerer de øverste elementene i stabelen.
La oss se et eksempel på peek()-metoden.
StackPeekMethodExample.java
system.out.println
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); } }
Produksjon:
Stack: [Apple, Grapes, Mango, Orange] Element at the top of the stack: Orange
Stack Class search() Metode
Metoden søker etter objektet i stabelen fra toppen. Den analyserer en parameter som vi ønsker å søke etter. Den returnerer den 1-baserte plasseringen til objektet i stabelen. Det øverste objektet i stabelen regnes på avstand 1.
Anta at o er et objekt i stabelen som vi ønsker å søke etter. Metoden returnerer avstanden fra toppen av stabelen til forekomsten nærmest toppen av stabelen. Det bruker er lik() metode for å søke etter et objekt i stabelen.
Syntaks
public int search(Object o)
Parameter: o er ønsket objekt som skal søkes i.
Returnerer: Den returnerer objektplasseringen fra toppen av stabelen. Hvis den returnerer -1, betyr det at objektet ikke er på stabelen.
La oss se et eksempel på search()-metoden.
markering gjennomstreking
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 Operations
Størrelse på stakken
Vi kan også finne størrelsen på stabelen ved å bruke size()-metoden til Vector-klassen . Den returnerer det totale antallet elementer (størrelsen på stabelen) i stabelen.
Syntaks
public int size()
La oss se et eksempel på size()-metoden til Vector-klassen.
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); } }
Produksjon:
Is the stack empty or not? false The stack size is: 5
Iterer elementer
Iterasjon betyr å hente elementene i stabelen. Vi kan hente elementer av stabelen ved å bruke tre forskjellige metoder er som følger:
- Ved hjelp av iterator() Metode
- Ved hjelp av for hver() Metode
- Ved hjelp av listIterator() Metode
Bruke iterator()-metoden
Det er metoden til Iterator-grensesnittet. Den returnerer en iterator over elementene i stabelen. Før du bruker iterator()-metoden importerer dujava.util.Iteratorpakke.
Syntaks
Iterator iterator()
La oss utføre en iterasjon over stabelen.
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); } } }
Produksjon:
BMW Audi Ferrari Bugatti Jaguar
Bruke forEach()-metoden
Java gir en forEach()-metode for å iterere over elementene. Metoden er definert i Iterable og Strøm grensesnitt.
Syntaks
default void forEach(Consumeraction)
La oss iterere over stabelen ved å bruke forEach()-metoden.
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); }); } }
Produksjon:
Iteration over the stack using forEach() Method: 119 203 988
Ved hjelp av listIterator()-metoden
Denne metoden returnerer en listeiterator over elementene i den nevnte listen (i rekkefølge), og starter på den angitte posisjonen i listen. Den gjentar stabelen fra topp til bunn.
java streng sammenligning
Syntaks
ListIterator listIterator(int index)
Parameter: Metoden analyserer en parameter kalt indeks.
Returnerer: Denne metoden returnerer en listeiterator over elementene, i rekkefølge.
Unntak: Det kaster IndexOutOfBoundsException hvis indeksen er utenfor området.
La oss iterere over stabelen ved å bruke listIterator()-metoden.
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); } } }
Produksjon:
Iteration over the Stack from top to bottom: 988 203 119