logo

Java stack

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.

Java stack

La oss skyve henholdsvis 20, 13, 89, 90, 11, 45, 18 inn i stabelen.

Java stack

La oss fjerne (pop) 18, 45 og 11 fra stabelen.

Java stack

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.

Java stack

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

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.

Java stack

Tabellen nedenfor viser de forskjellige verdiene for toppen.

Java stack

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.

Java stack

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 

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