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.
Låt oss trycka in 20, 13, 89, 90, 11, 45, 18 respektive i stacken.
Låt oss ta bort (pop) 18, 45 och 11 från stacken.
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.
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
När vi poppar ett element från stacken är värdet på topp minskat med 1 . I följande figur har vi 9.
Följande tabell visar de olika värdena för toppen.
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.
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
Stack Class search() Metod
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