Lo Stack in Java è una struttura di dati, molto simile a una coda, un array, un elenco collegato o un albero. Dove differisce dagli altri è che lo stack Java si basa sul principio LIFO (Last In, First Out). Ciò significa che quando usi i due comandi per aggiungere e rimuovere un elemento dallo stack, il primo che rimuovi sarà sempre l'ultimo che hai aggiunto. Diamo un'occhiata più da vicino alla classe Java Stack
Esplorare la classe Java Stack
La Java Stack Class è un'estensione della classe Vector , che a sua volta estende la classe List . Poiché i vettori sono mutabili e possono crescere e ridursi con le richieste degli elementi all'interno, Stack s può anche cambiare dimensione su richiesta. L'estensione della classe Vector aggiunge cinque operazioni che trasformano un Vector in uno Stack . Queste cinque operazioni sono:- .push(E item) – posiziona un elemento in cima allo stack
- .pop() – rimuove l'elemento in cima allo stack e lo restituisce come valore della funzione
- .peek() – guarda l'elemento in cima allo stack senza rimuoverlo
- .empty() – Funzione booleana per verificare se lo stack è vuoto o meno. Restituisce uno 0 o 1.
- .search(Object o) – Cerca o e restituisce la sua posizione. Il valore è in base 1, non in base 0
Codifica di un esempio di stack Java
Ora che conosciamo le funzioni per Stack , codifichiamo un esempio di stack Java. Gli stack sono molto utili per gestire i dati che devono essere archiviati temporaneamente e recuperati rapidamente. Poiché lo Stack è LIFO, è eccezionalmente utile per l'attraversamento dei nodi durante l'esplorazione di una struttura di dati ad albero. Prima di entrare in tutto ciò, creiamo uno stack di base. Il codice per implementare uno stack è il seguente:
import java.util.*;
class Main {
public static void main(String[] args) {
Stack<Integer> stackExample = new Stack<Integer>();
Questo è tutto ciò che devi fare per creare uno Stack vuoto . Puoi anche dichiararlo semplicemente senza dichiarare un tipo di dati usando:
Stack example = new Stack();
Ricorda che poiché gli Stack s sono mutabili, quando spingiamo gli elementi nello stack, si adatterà automaticamente alle dimensioni. Ora diamo un'occhiata a come utilizzare le funzioni Stack .
Implementazione dello stack Java
Diamo un'occhiata a come utilizzare i cinque metodi che abbiamo esplorato brevemente in precedenza. L'implementazione dello stack Java è facile da ricordare se la pensi come una pila di piatti. Metti i piatti sulla pila, ma per prendere un piatto non vai in fondo, ne prendi uno dall'alto. L'ultimo che metti è il primo che togli. Estendendo il nostro esempio precedente con stackExample , le funzioni sono le seguenti:Spingere
// pushing integers onto the Stack
stackExample.push(5);
stackExample.push(10);
A questo punto, mostreremo le altre funzioni come se avessimo inserito ogni volta questi due numeri interi nell'esempio dello stack Java.
Pop
//popping integers off of the Stack
System.out.println(stackExample.pop());
System.out.println(stackExample.pop());
Produzione:
10
5
È vuoto
Ora, supponiamo che tu voglia rimuovere tutti gli elementi da uno Stack ma non sei sicuro di quanti elementi ci siano. È possibile combinare la funzione Boolean.isEmpty() con una precondizione while loop per estrarre tutti gli elementi dallo Stack . Guarda come viene eseguita questa implementazione dello stack Java.
while(!stackExample.isEmpty()) {
System.out.println(stackExample.pop());
}
Produzione
10
5
Sbirciare
Possiamo usare .peek() come implementazione dello stack in Java per dare un'occhiata all'elemento successivo nello Stack senza rimuoverlo.
System.out.println(stackExample.peek());
Produzione
10
Se estraiamo e stampiamo lo Stack , restituirà 10 e 5 perché il 10 è ancora nello stack. L'abbiamo solo guardato, non l'abbiamo rimosso con la funzione pop. La funzione peek è un ottimo strumento per Stack s in java.
Ricerca
Se vogliamo trovare un elemento specifico, l'implementazione degli stack in Java utilizza .search(e); per trovarlo.
System.out.println(stackExample.search(5));
Produzione
2
Ricorda che questo è perché contiamo dall'alto dello Stack e gli Stack Java iniziano da 1, non da 0 come un Array . Quindi, guardando la pila, è (10) --> (5), e 5 è nella posizione numero 2. Se provi a trovare un elemento che non è in Stack , otterrai un -1 come output.
Iterare
Quando si lavora con qualsiasi raccolta, a volte potrebbe essere necessario cercare più elementi. Per risparmiare complessità e dover cercare più volte nello Stack , puoi utilizzare l'iterazione. Poiché Stack in Java estende la classe List , esistono diverse opzioni per l'iterazione. Uno dei più semplici consiste nell'usare semplicemente la funzione ListIterator . ListIterator è utile in quanto ti consente di attraversare uno Stack dall'alto verso il basso o dal basso verso l'alto usando .hasPrevious() o .hasNext() . Ecco come appare:
ListIterator<Integer> exampleIterator = stackExample.listIterator(stackExample.size());
while (exampleIterator.hasPrevious()) {
int iteration = exampleIterator.previous();
System.out.println(iteration);
}
Produzione
10
5
Tieni presente che quando esegui l'iterazione su Stack s in Java, non rimuovi alcun elemento al suo interno. L'iterazione consente essenzialmente di sbirciare ogni elemento nello stack in ordine. Quando lo fai, puoi cercare posizioni in cui si trovano determinati elementi e poi esaminarli e manipolarli. Puoi contarli, eliminarli o persino modificarli se necessario.
GO TO FULL VERSION