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ă.
Să împingem 20, 13, 89, 90, 11, 45, 18, respectiv în stivă.
Să scoatem (pop) 18, 45 și 11 din stivă.
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.
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
Când scoatem un element din stivă, valoarea topului este a scăzut cu 1 . În figura următoare, am apărut 9.
Următorul tabel arată diferitele valori ale vârfului.
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.
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 Stack Class search().
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