logo

Pila Java

IL pila è una struttura dati lineare utilizzata per archiviare la raccolta di oggetti. È basato su Ultimo ad entrare, primo ad uscire (LIFO). Collezione Java framework fornisce molte interfacce e classi per archiviare la raccolta di oggetti. Uno di questi è il Classe di stack che fornisce diverse operazioni come push, pop, ricerca, ecc.

In questa sezione discuteremo di Classe dello stack Java , suo metodi, E strumento la struttura dei dati dello stack in a Programma Java . Ma prima di passare alla classe Java Stack, dai una rapida occhiata a come funziona lo stack.

La struttura dei dati dello stack ha le due operazioni più importanti che sono spingere E pop . L'operazione push inserisce un elemento nello stack e l'operazione pop rimuove un elemento dalla cima dello stack. Vediamo come funzionano sullo stack.

Pila Java

Mettiamo nello stack rispettivamente 20, 13, 89, 90, 11, 45, 18.

Pila Java

Rimuoviamo (pop) 18, 45 e 11 dallo stack.

Pila Java

Pila vuota: Se lo stack non ha elementi è noto come an pila vuota . Quando lo stack è vuoto il valore della variabile in alto è -1.

Pila Java

Quando inseriamo un elemento nello stack, il top è aumentato di 1 . Nella figura seguente,

  • Premi 12, in alto=0
  • Premi 6, in alto=1
  • Premi 9, in alto=2
Pila Java

Quando estraiamo un elemento dallo stack il valore di top è diminuito di 1 . Nella figura seguente, ne abbiamo spuntati 9.

Pila Java

La tabella seguente mostra i diversi valori del top.

Pila Java

Classe dello stack Java

A Giava, Pila è una classe che rientra nel framework Collection che estende il Vettore classe. Implementa anche le interfacce Elenco, raccolta, iterabile, clonabile, serializzabile. Rappresenta lo stack di oggetti LIFO. Prima di utilizzare la classe Stack, dobbiamo importare il filejava.utilpacchetto. La classe dello stack organizzata nella gerarchia del framework Collections, come mostrato di seguito.

Pila Java

Costruttore di classi stack

La classe Stack contiene solo i file costruttore predefinito che crea uno stack vuoto.

Serie di fibonacci in Java
 public Stack() 

Creazione di una pila

Se vogliamo creare uno stack, per prima cosa importiamo il filejava.utilpackage e creare un oggetto della classe Stack.

 Stack stk = new Stack(); 

O

 Stack stk = new Stack(); 

Dove type denota il tipo di stack come Integer, String, ecc.

Metodi della classe Stack

Possiamo eseguire operazioni push, pop, peek e ricerca sullo stack. La classe Java Stack fornisce principalmente cinque metodi per eseguire queste operazioni. Insieme a questo, fornisce anche tutti i metodi di Classe vettoriale Java .

Metodo Modificatore e tipo Descrizione del metodo
vuoto() booleano Il metodo verifica che lo stack sia vuoto o meno.
spingere (voce E) E Il metodo spinge (inserisce) un elemento in cima allo stack.
pop() E Il metodo rimuove un elemento dalla cima dello stack e restituisce lo stesso elemento come valore di quella funzione.
sbirciare() E Il metodo esamina l'elemento superiore dello stack senza rimuoverlo.
cerca(Oggetto o) int Il metodo cerca l'oggetto specificato e restituisce la posizione dell'oggetto.

Metodo Stack Class empty()

IL vuoto() Il metodo della classe Stack controlla che lo stack sia vuoto o meno. Se lo stack è vuoto, restituisce vero, altrimenti restituisce falso. Possiamo anche utilizzare il metodo isEmpty() della classe Vector .

Sintassi

 public boolean empty() 

Ritorna: Il metodo restituisce true se lo stack è vuoto, altrimenti restituisce false.

come ottenere emoji Apple su Android

Nell'esempio seguente abbiamo creato un'istanza della classe Stack. Successivamente, abbiamo invocato il metodo empty() due volte. La prima volta che ritorna VERO perché non abbiamo inserito alcun elemento nello stack. Successivamente, abbiamo inserito gli elementi nello stack. Ancora una volta abbiamo invocato il metodo empty() che restituisce falso perché lo stack non è vuoto.

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

Produzione:

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

Metodo push() della classe Stack

Il metodo inserisce un elemento in cima allo stack. Funziona allo stesso modo del metodo addElement(item) della classe Vector. Passa un parametro articolo essere messo in pila.

Sintassi

 public E push(E item) 

Parametro: Un oggetto da spingere in cima alla pila.

Ritorna: Il metodo restituisce l'argomento che abbiamo passato come parametro.

Metodo pop() della classe Stack

Il metodo rimuove un oggetto in cima allo stack e restituisce lo stesso oggetto. Lancia VuotoStackException se la pila è vuota.

Sintassi

 public E pop() 

Ritorna: Restituisce un oggetto che si trova in cima allo stack.

Implementiamo lo stack in un programma Java ed eseguiamo operazioni push e 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); } } 

Produzione:

 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] 

Metodo peek() della classe Stack

Esamina l'elemento che si trova in cima allo stack. Lancia anche VuotoStackException se la pila è vuota.

Sintassi

 public E peek() 

Ritorna: Restituisce gli elementi principali dello stack.

Vediamo un esempio del metodo peek().

StackPeekMethodExample.java

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

Produzione:

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

Il metodo cerca l'oggetto nello stack dall'alto. Analizza un parametro che vogliamo cercare. Restituisce la posizione in base 1 dell'oggetto nello stack. L'oggetto più in alto della pila è considerato a distanza 1.

Supponiamo che o sia un oggetto nello stack che vogliamo cercare. Il metodo restituisce la distanza dalla parte superiore dello stack dell'occorrenza più vicina alla parte superiore dello stack. Utilizza equivale() metodo per cercare un oggetto nello stack.

Sintassi

 public int search(Object o) 

Parametro: o è l'oggetto desiderato da cercare.

Ritorna: Restituisce la posizione dell'oggetto dalla cima dello stack. Se restituisce -1, significa che l'oggetto non è nello stack.

Vediamo un esempio del metodo search().

stringa su int in Java

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

Operazioni sullo stack Java

Dimensione della pila

Possiamo anche trovare la dimensione dello stack utilizzando il metodo size() della classe Vector . Restituisce il numero totale di elementi (dimensione dello stack) nello stack.

Sintassi

 public int size() 

Vediamo un esempio del metodo size() della classe 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); } } 

Produzione:

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

Elementi ripetuti

Iterare significa recuperare gli elementi dello stack. Possiamo recuperare gli elementi dello stack utilizzando tre metodi diversi:

  • Utilizzando iteratore() Metodo
  • Utilizzando per ciascuno() Metodo
  • Utilizzando elencoIteratore() Metodo

Utilizzando il metodo iterator()

È il metodo dell'interfaccia Iterator. Restituisce un iteratore sugli elementi nello stack. Prima di utilizzare il metodo iterator() importare il filejava.util.Iteratorpacchetto.

Sintassi

 Iterator iterator() 

Eseguiamo un'iterazione sullo stack.

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

Produzione:

gzip per Linux
 BMW Audi Ferrari Bugatti Jaguar 

Utilizzando il metodo forEach()

Java fornisce un metodo forEach() per scorrere gli elementi. Il metodo è definito nell'art Iterabile E Flusso interfaccia.

Sintassi

 default void forEach(Consumeraction) 

Iteriamo sullo stack utilizzando il metodo 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); }); } } 

Produzione:

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

Utilizzando il metodo listIterator()

Questo metodo restituisce un iteratore di elenco sugli elementi nell'elenco menzionato (in sequenza), a partire dalla posizione specificata nell'elenco. Itera lo stack dall'alto verso il basso.

Sintassi

 ListIterator listIterator(int index) 

Parametro: Il metodo analizza un parametro denominato indice.

Ritorna: Questo metodo restituisce un iteratore di elenco sugli elementi, in sequenza.

Eccezione: Lancia IndexOutOfBoundsException se l'indice è fuori range.

Iteriamo sullo stack utilizzando il metodo 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); } } } 

Produzione:

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