logo

Java stack

De stack är en linjär datastruktur som används för att lagra samlingen av objekt. Det baseras på Sist in först ut (LIFO). Java samling ramverket tillhandahåller många gränssnitt och klasser för att lagra samlingen av objekt. En av dem är Stackklass som ger olika operationer som push, pop, sökning, etc.

I det här avsnittet kommer vi att diskutera Java Stack klass , dess metoder, och genomföra stackdatastrukturen i en Java-program . Men innan du går över till Java Stack-klassen har du en snabb bild av hur stacken fungerar.

Stackdatastrukturen har de två viktigaste operationerna som är skjuta på och pop . Tryckoperationen sätter in ett element i stapeln och popoperationen tar bort ett element från toppen av stapeln. Låt oss se hur de fungerar på stack.

Java stack

Låt oss trycka in 20, 13, 89, 90, 11, 45, 18 respektive i stacken.

Java stack

Låt oss ta bort (pop) 18, 45 och 11 från stacken.

Java stack

Tom stack: Om stapeln inte har något element kallas en tom stack . När stacken är tom är värdet på den översta variabeln -1.

Java stack

När vi trycker in ett element i stapeln är toppen ökat med 1 . I följande figur,

  • Tryck 12, topp=0
  • Tryck 6, topp=1
  • Tryck 9, topp=2
Java stack

När vi poppar ett element från stacken är värdet på topp minskat med 1 . I följande figur har vi 9.

Java stack

Följande tabell visar de olika värdena för toppen.

Java stack

Java Stack klass

I Java, Stack är en klass som faller under samlingsramen som utökar Vektor klass. Den implementerar också gränssnitt Lista, Samling, Iterable, Cloneable, Serialiserbar. Den representerar LIFO-stacken av objekt. Innan vi använder Stack-klassen måste vi importerajava.utilpaket. Stackklassen ordnad i ramhierarkin för samlingar, som visas nedan.

Java stack

Stack Class Constructor

Klassen Stack innehåller endast standardkonstruktör som skapar en tom stack.

 public Stack() 

Skapa en stack

Om vi ​​vill skapa en stack, importera förstjava.utilpaketera och skapa ett objekt av klassen Stack.

 Stack stk = new Stack(); 

Eller

 Stack stk = new Stack(); 

Där typ anger typen av stack som heltal, sträng, etc.

Stapelklassens metoder

Vi kan utföra push-, pop-, peek- och sökoperationer på stacken. Java Stack-klassen tillhandahåller huvudsakligen fem metoder för att utföra dessa operationer. Tillsammans med detta ger den också alla metoder för Java Vector klass .

Metod Modifierare och typ Metodbeskrivning
tömma() booleskt Metoden kontrollerar att stacken är tom eller inte.
push(E objekt) OCH Metoden skjuter (infogar) ett element på toppen av stapeln.
pop() OCH Metoden tar bort ett element från toppen av stacken och returnerar samma element som värdet för den funktionen.
titt() OCH Metoden tittar på det översta elementet i stacken utan att ta bort det.
sök(Objekt o) int Metoden söker igenom det angivna objektet och returnerar objektets position.

Stack Class empty() Metod

De tömma() metoden för klassen Stack kontrollera att stacken är tom eller inte. Om stacken är tom, returnerar den sant, annars returnerar den falskt. Vi kan också använda metoden isEmpty() för klassen Vector .

hur man ändrar sträng till int

Syntax

 public boolean empty() 

Returnerar: Metoden returnerar true om stacken är tom, annars returnerar false.

I följande exempel har vi skapat en instans av klassen Stack. Efter det har vi anropat metoden empty() två gånger. Första gången den kommer tillbaka Sann eftersom vi inte har tryckt in något element i stacken. Efter det har vi tryckt in element i traven. Återigen har vi anropat metoden empty() som returnerar falsk eftersom stacken inte är 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); } } 

Produktion:

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

Stack Class push() metod

Metoden infogar ett objekt på toppen av stapeln. Det fungerar på samma sätt som metoden addElement(item) för klassen Vector. Den passerar en parameter Artikel att skjutas in i traven.

Syntax

 public E push(E item) 

Parameter: Ett föremål som ska skjutas upp på toppen av högen.

Returnerar: Metoden returnerar argumentet som vi har skickat som en parameter.

Stack Class pop() Metod

Metoden tar bort ett objekt överst i stacken och returnerar samma objekt. Det kastar EmptyStackException om stapeln är tom.

Syntax

 public E pop() 

Returnerar: Det returnerar ett objekt som är överst i stacken.

Låt oss implementera stacken i ett Java-program och utföra push- och popoperationer.

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

Produktion:

 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() Metod

Den tittar på elementet som är överst i stapeln. Det kastar också EmptyStackException om stapeln är tom.

Syntax

 public E peek() 

Returnerar: Det returnerar de översta elementen i stacken.

Låt oss se ett exempel på peek()-metoden.

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

Produktion:

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

Metoden söker igenom objektet i stacken från toppen. Den analyserar en parameter som vi vill söka efter. Den returnerar den 1-baserade platsen för objektet i stacken. Det översta föremålet i stacken anses vara på avstånd 1.

Antag att o är ett objekt i stapeln som vi vill söka efter. Metoden returnerar avståndet från toppen av stapeln av förekomsten närmast toppen av stapeln. Det använder lika() metod för att söka efter ett objekt i stacken.

10 av 40

Syntax

 public int search(Object o) 

Parameter: o är det objekt som ska sökas igenom.

Returnerar: Den returnerar objektets plats från toppen av stacken. Om det returnerar -1, betyder det att objektet inte finns på stacken.

Låt oss se ett exempel på metoden search().

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

Stackens storlek

Vi kan också hitta storleken på stacken med hjälp av metoden size() för klassen Vector . Den returnerar det totala antalet element (stackens storlek) i stacken.

Syntax

 public int size() 

Låt oss se ett exempel på metoden size() för klassen Vector.

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

Produktion:

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

Iterera element

Iterera betyder att hämta elementen i stacken. Vi kan hämta element i stacken med tre olika metoder är följande:

  • Använder sig av iterator() Metod
  • Använder sig av för varje() Metod
  • Använder sig av listIterator() Metod

Använder iterator()-metoden

Det är metoden för Iterator-gränssnittet. Den returnerar en iterator över elementen i stacken. Innan du använder metoden iterator() importerajava.util.Iteratorpaket.

Syntax

 Iterator iterator() 

Låt oss utföra en iteration över stacken.

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

Produktion:

 BMW Audi Ferrari Bugatti Jaguar 

Använda metoden forEach().

Java tillhandahåller en forEach()-metod för att iterera över elementen. Metoden definieras i Iterable och Ström gränssnitt.

Syntax

 default void forEach(Consumeraction) 

Låt oss iterera över stacken med metoden forEach().

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

Produktion:

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

Använder listIterator()-metoden

Denna metod returnerar en listiterator över elementen i den nämnda listan (i sekvens), med start på den angivna positionen i listan. Den itererar stapeln från topp till botten.

Syntax

 ListIterator listIterator(int index) 

Parameter: Metoden analyserar en parameter med namnet index.

Returnerar: Denna metod returnerar en listiterator över elementen i sekvens.

Undantag: Det kastar IndexOutOfBoundsException om indexet ligger utanför intervallet.

Låt oss iterera över stacken med metoden listIterator().

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

Produktion:

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