La classe Java Stack estende la classe Vector. Ti consente di creare nuovi elementi, visualizzare un elemento nello stack, aggiornare un elemento nello stack ed eliminare tutti gli elementi dallo stack. Impila i dati di processo in un ordine FILO (first-in-last-out). Ciò significa che puoi solo aggiungere o rimuovere elementi dalla cima di una pila.

La struttura dei dati dello stack ha cinque metodi principali. Tuttavia, la classe Java Stack ha anche accesso a oltre 40 altri metodi, che eredita dalla classe Vector.

Creazione di uno stack in Java

La classe Stack ha un unico costruttore che ti permette di creare uno stack vuoto. Ogni Stack ha un argomento di tipo, che determina il tipo di dati che memorizzerà.

importare java.util. Pila;

pubblicoclassePrincipale{
pubblicostaticovuotoprincipale(Stringa[] argomenti){
// crea una pila
Pila Clienti = nuovo Pila();
}
}

Il codice sopra crea una struttura di dati Stack chiamata Clienti che memorizza i valori String.

Popolamento di una pila

Uno dei cinque metodi principali della classe Stack è il

instagram viewer
spingere() metodo. Prende un singolo elemento che ha lo stesso tipo di dati dello Stack e lo inserisce in cima allo Stack.

// popola uno stack
Customers.push("Jane Doe");
Customers.push("John Doe");
Customers.push("Patrick Williams");
Clienti.push("Paul Smith");
Customers.push("Erick Rowe");
Clienti.push("Ella Jones");
Customers.push("Jessica Brown");

Il codice sopra popola lo Stack Clienti con sette elementi. Spinge ogni nuovo elemento in cima allo Stack. Quindi, l'elemento in cima alla pila dei clienti è Jessica Brown. E puoi confermarlo usando Stack sbirciare() metodo. Il sbirciare() il metodo non accetta argomenti. Restituisce l'oggetto in cima allo Stack senza rimuoverlo.

// visualizza l'oggetto in cima a una pila
System.out.println (Customers.peek());

Il codice sopra restituisce il seguente output alla console:

Jessica Brown

Visualizza gli elementi in una pila

La struttura dei dati dello stack è piuttosto restrittiva nel modo in cui ti consente di interagire con i suoi dati. Dovresti utilizzare principalmente uno Stack tramite il suo elemento più in alto. Tuttavia, puoi anche utilizzare metodi ereditati dalla classe Vector per accedere a elementi arbitrari. Tali metodi includono elementAt e removeElementAt.

Il modo più semplice per ottenere una panoramica dei contenuti di uno Stack è semplicemente stamparlo. Passa un oggetto Stack a System.out println e il metodo toString() di Stack produrrà un bel riassunto:

// visualizza tutti gli elementi di uno stack
System.out.println (Clienti);

Il codice sopra stampa il seguente output sulla console:

[Jane Doe, John Doe, Patrick Williams, Paul Smith, Erick Rowe, Ella Jones, Jessica Brown]

Ricerca di una posizione dell'oggetto in una pila

Se conosci un elemento nello Stack, puoi identificarne la posizione di indice o la sua posizione relativa alla parte superiore dello Stack. Il indice di() prende un elemento nello Stack e restituisce la sua posizione di indice. Tieni presente che uno Stack inizia a indicizzare i suoi elementi a zero.

// trova una posizione nell'indice dell'oggetto
System.out.println (Customers.indexOf ("Jane Doe"));

Il codice sopra stampa il seguente output sulla console:

0

Il ricerca() method è uno dei metodi primari della classe Stack. Restituisce una posizione dell'oggetto relativa alla cima della pila, dove l'elemento in cima alla pila ha la posizione numero uno.

System.out.println (Customers.search ("Jane Doe"));

Il codice sopra stampa il seguente output sulla console:

7

Se fornisci il ricerca() o il indice di() metodi con un elemento che non è nello Stack, ne restituiranno uno negativo.

System.out.println (Customers.search ("Elsa Doe"));
System.out.println (Customers.indexOf ("Elsa Doe"));

Il codice sopra stampa il seguente output sulla console:

-1
-1

Aggiornare gli elementi in una pila

Puoi manipolare solo un oggetto in cima a una pila. Quindi, se vuoi aggiornare un elemento che non è in cima allo Stack, dovrai inserire tutti gli elementi sopra di esso. Il pop() è uno dei metodi principali di Stack. Il pop() il metodo non accetta argomenti. Rimuove l'articolo in cima alla pila e lo restituisce.

// aggiorna un oggetto
Clienti.pop();
Clienti.pop();
Clienti.push("Ella James");
Customers.push("Jessica Brown");
System.out.println (Clienti);

Il codice sopra stampa il seguente output sulla console:

[Jane Doe, John Doe, Patrick Williams, Paul Smith, Erick Rowe, Ella James, Jessica Brown]

Come puoi vedere dall'output, il codice aggiorna il cognome di Ella a James. Implica un processo che estrae gli elementi dallo stack fino a quando non si arriva all'oggetto di destinazione. Quindi apre l'oggetto di destinazione; lo aggiorna; e lo spinge, insieme agli oggetti che si trovavano sopra l'oggetto di destinazione, di nuovo nello stack. Dovrai utilizzare un programma che esegua operazioni come quella sopra, ogni volta che desideri aggiornare un elemento nel tuo Stack.

Eliminazione di un elemento da una pila

Per eliminare un singolo elemento dalla struttura dati Stack, puoi utilizzare nuovamente il metodo pop(). Se l'elemento che desideri eliminare non è in alto, puoi inserire gli elementi in alto fino a raggiungere quello desiderato.

Eliminazione di tutti gli elementi in una pila

Per eliminare tutti gli elementi da uno Stack, puoi usare a Ciclo while Java con il metodo pop() per eliminare gli elementi uno alla volta. Un approccio più efficiente, tuttavia, consiste nell'utilizzare il chiaro() metodo. Il chiaro() è uno che la classe Stack eredita dalla classe Vector. Non richiede argomenti, non restituisce nulla, ma rimuove semplicemente tutti gli elementi all'interno della struttura dati Stack.

// elimina tutti gli elementi in una pila
Clienti.clear();
System.out.println (Clienti.vuoto());

Il codice sopra cancella tutti gli articoli nello Stack Clienti. Quindi utilizza il vuoto() metodo per verificare se lo Stack è vuoto. Il vuoto() è un altro metodo principale della Java Stack Class. Non accetta argomenti e restituisce un valore booleano. Questo metodo restituisce true se Stack è vuoto e false in caso contrario.

Il codice sopra stampa il seguente output sulla console:

VERO

Applicazioni pratiche per la struttura dei dati dello stack

La struttura dei dati dello Stack è molto restrittiva. Non fornisce la stessa flessibilità nell'elaborazione dei dati come altre strutture di dati. Questo pone la domanda: quando dovresti usare la struttura dati Stack?

La struttura dei dati Stack è ideale per le applicazioni che richiedono l'elaborazione dei dati in ordine inverso. Questi includono:

  • Un'applicazione che controlla se una parola è un palindromo.
  • Un'applicazione che converte i numeri decimali in numeri binari.
  • Applicazioni che consentono agli utenti di annullare.
  • Giochi che consentono a un utente di tornare alle mosse precedenti, come una partita a scacchi.