logo

Stiva Java

The grămadă este o structură de date liniară care este utilizată pentru a stoca colecția de obiecte. Se bazeaza pe Ultimul-Intrat-Primul-Ieșit (LIFO). Colecția Java framework oferă multe interfețe și clase pentru a stoca colecția de obiecte. Una dintre ele este Clasa de stivă care oferă diferite operații, cum ar fi push, pop, search etc.

În această secțiune, vom discuta despre Clasa Java Stack , este metode, și implementează structura de date a stivei în a program Java . Dar înainte de a trece la clasa Java Stack, aveți o vedere rapidă a modului în care funcționează stiva.

seria Fibonacci în java

Structura de date a stivei are cele mai importante două operații care sunt Apăsaţi și pop . Operația de împingere inserează un element în stivă, iar operația de pop scoate un element din partea de sus a stivei. Să vedem cum funcționează pe stivă.

Stivă Java

Să împingem 20, 13, 89, 90, 11, 45, 18, respectiv în stivă.

Stivă Java

Să scoatem (pop) 18, 45 și 11 din stivă.

Stivă Java

Stivă goală: Dacă stiva nu are niciun element este cunoscut ca an stivă goală . Când stiva este goală, valoarea variabilei de sus este -1.

Stivă Java

Când împingem un element în stivă, partea de sus este crescut cu 1 . În figura următoare,

  • Apăsați 12, sus=0
  • Apăsați 6, sus=1
  • Apăsați 9, sus=2
Stivă Java

Când scoatem un element din stivă, valoarea topului este a scăzut cu 1 . În figura următoare, am apărut 9.

Stivă Java

Următorul tabel arată diferitele valori ale vârfului.

Stivă Java

Clasa Java Stack

În Java, Grămadă este o clasă care se încadrează în cadrul Collection care extinde Vector clasă. De asemenea, implementează interfețe Listă, Colecție, Iterabil, Clonabil, Serializabil. Reprezintă teancul LIFO de obiecte. Înainte de a folosi clasa Stack, trebuie să importamjava.utilpachet. Clasa de stivă aranjată în ierarhia cadrului Colecții, așa cum se arată mai jos.

Stivă Java

Constructor de clasă stivă

Clasa Stack conține numai constructor implicit care creează o stivă goală.

 public Stack() 

Crearea unei stive

Dacă vrem să creăm o stivă, importați mai întâi fișieruljava.utilpachet și creați un obiect din clasa Stack.

 Stack stk = new Stack(); 

Sau

 Stack stk = new Stack(); 

Unde tip denotă tipul de stivă, cum ar fi Integer, String etc.

Metodele clasei Stack

Putem efectua operații de push, pop, peek și căutare pe stivă. Clasa Java Stack oferă în principal cinci metode pentru a efectua aceste operații. Pe lângă aceasta, oferă și toate metodele Clasa Java Vector .

Metodă Modificator și tip Descrierea metodei
gol() boolean Metoda verifică dacă stiva este goală sau nu.
push(E item) ȘI Metoda împinge (inserează) un element în partea de sus a stivei.
pop() ȘI Metoda elimină un element din partea de sus a stivei și returnează același element ca și valoarea acelei funcție.
arunca o privire() ȘI Metoda se uită la elementul superior al stivei fără a-l îndepărta.
căutare (obiect o) int Metoda caută obiectul specificat și returnează poziția obiectului.

Stack Class empty() Metoda

The gol() metoda clasei Stack verifică dacă stiva este goală sau nu. Dacă stiva este goală, returnează adevărat, altfel returnează false. De asemenea, putem folosi metoda isEmpty() a clasei Vector.

Sintaxă

 public boolean empty() 

Se intoarce: Metoda returnează true dacă stiva este goală, altfel returnează false.

În exemplul următor, am creat o instanță a clasei Stack. După aceea, am invocat metoda empty() de două ori. Prima dată se întoarce Adevărat pentru că nu am împins niciun element în stivă. După aceea, am împins elemente în stivă. Din nou am invocat metoda empty() care se întoarce fals deoarece stiva nu este goală.

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

Ieșire:

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

Metoda push() Clasa stivă

Metoda inserează un articol în partea de sus a stivei. Funcționează la fel ca metoda addElement(item) a clasei Vector. Trece un parametru articol pentru a fi împins în stivă.

Sintaxă

 public E push(E item) 

Parametru: Un articol care trebuie împins în partea de sus a stivei.

Se intoarce: Metoda returnează argumentul pe care l-am transmis ca parametru.

Stack Class pop() Metoda

Metoda elimină un obiect din partea de sus a stivei și returnează același obiect. Aruncă EmptyStackException dacă stiva este goală.

Sintaxă

 public E pop() 

Se intoarce: Returnează un obiect care se află în partea de sus a stivei.

simbol derivat parțial latex

Să implementăm stiva într-un program Java și să efectuăm operații push și pop.

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

Ieșire:

 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] 

Metoda peek() Clasa Stiva

Se uită la elementul care se află în partea de sus a stivei. De asemenea, aruncă EmptyStackException dacă stiva este goală.

Sintaxă

 public E peek() 

Se intoarce: Returnează elementele de sus ale stivei.

Să vedem un exemplu al metodei peek().

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

Ieșire:

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

Metoda caută obiectul din stiva de sus. Analizează un parametru pe care vrem să-l căutăm. Returnează locația bazată pe 1 a obiectului din stivă. Obiectul cel mai de sus al stivei este considerat la distanța 1.

java conține subșir

Să presupunem că o este un obiect din stiva pe care vrem să-l căutăm. Metoda returnează distanța de la partea de sus a stivei a apariției cele mai apropiate de vârful stivei. Folosește este egal() metoda de a căuta un obiect din stivă.

Sintaxă

 public int search(Object o) 

Parametru: o este obiectul dorit de căutat.

Se intoarce: Returnează locația obiectului din partea de sus a stivei. Dacă returnează -1, înseamnă că obiectul nu este pe stivă.

Să vedem un exemplu al metodei 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); } } 

Operații Java Stack

Dimensiunea stivei

De asemenea, putem găsi dimensiunea stivei folosind metoda size() a clasei Vector. Returnează numărul total de elemente (dimensiunea stivei) din stivă.

Sintaxă

 public int size() 

Să vedem un exemplu de metoda size() a clasei 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); } } 

Ieșire:

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

Elemente repetate

Iterare înseamnă a prelua elementele stivei. Putem prelua elemente ale stivei folosind trei metode diferite, după cum urmează:

  • Folosind iterator() Metodă
  • Folosind pentru fiecare() Metodă
  • Folosind listIterator() Metodă

Folosind metoda iterator().

Este metoda interfeței Iterator. Returnează un iterator peste elementele din stivă. Înainte de a utiliza metoda iterator() importațijava.util.Iteratorpachet.

Sintaxă

 Iterator iterator() 

Să efectuăm o iterație peste stivă.

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

Ieșire:

excel elimina primul caracter
 BMW Audi Ferrari Bugatti Jaguar 

Folosind metoda forEach().

Java oferă o metodă forEach() pentru a repeta peste elemente. Metoda este definită în Iterabil și Curent interfață.

Sintaxă

 default void forEach(Consumeraction) 

Să repetăm ​​stiva folosind metoda 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); }); } } 

Ieșire:

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

Folosind metoda listIterator().

Această metodă returnează un iterator de listă peste elementele din lista menționată (în secvență), începând de la poziția specificată în listă. Iterează stiva de sus în jos.

Sintaxă

 ListIterator listIterator(int index) 

Parametru: Metoda parsează un parametru numit index.

Se intoarce: Această metodă returnează un iterator de listă peste elemente, în secvență.

Excepție: Aruncă IndexOutOfBoundsException dacă indicele este în afara intervalului.

Să repetăm ​​stiva folosind metoda 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); } } } 

Ieșire:

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