Vai al contenuto principale
Pubblicato il

Classe Stack in Java

Condividi:

Introduzione

La struttura dati di tipo "pila" è una delle più essenziali nell'informatica. In Java, la classe Stack fornisce un'implementazione efficiente di questo tipo di struttura.

Caratteristiche della Classe Stack

  1. LIFO (Last In - First Out): La caratteristica principale della pila è che l'ultimo elemento inserito è il primo a essere rimosso.
  2. Dinamica: La classe Stack cresce e si riduce dinamicamente man mano che gli elementi vengono aggiunti o rimossi.
  3. Metodi fondamentali: push(), pop() e peek() sono i metodi più utilizzati in una pila.

Quando usare la Classe Stack?

La pila viene generalmente utilizzata in situazioni in cui l'ordine di elaborazione deve seguire la regola LIFO. Alcune applicazioni tipiche includono:

  • Validare espressioni con parentesi bilanciate.
  • Implementazione di funzioni "annulla" negli editor.
  • Navigazione tra pagine nei browser web (pulsanti indietro e avanti).
  • Conversione di espressioni in notazione infissa in notazione postfissa.
package com.caffeinealgorithm.programaremjava;

import java.util.Stack;

public class ClassePila {
  private Stack<Integer> pila = new Stack<>();
  private int moltiplicatore = 10, numero = 1;

  public void Run() {
    for (int indice = 1; indice <= 5; indice++) {
      pila.push(numero);
      numero *= moltiplicatore;
    }

    stampaPila();

    System.out.printf("\nRimozione del numero %d dalla pila con il metodo pop().\n\n", pila.pop());

    stampaPila();

    System.out.printf("\nIl prossimo numero che verrà rimosso dalla pila è il %d.", pila.peek());
  }

  private void stampaPila() {
    for (int numero : pila)
      System.out.println(numero);
  }
}

/*
  1
  10
  100
  1000
  10000

  Rimozione del numero 10000 dalla pila con il metodo pop().

  1
  10
  100
  1000

  Il prossimo numero che verrà rimosso dalla pila è il 1000.
*/

Metodi Aggiuntivi della Classe Stack

  • isEmpty(): Restituisce vero se la pila è vuota.
  • search(Object o): Restituisce la posizione di un oggetto nella pila, con il conteggio che inizia dalla cima (l'elemento 1 è la cima).
  • size(): Restituisce il numero di elementi nella pila.
  • clear(): Rimuove tutti gli elementi dalla pila.

Limitazioni e Considerazioni

Sebbene la classe Stack sia utile, in molti scenari moderni è preferibile utilizzare la classe Deque al posto di Stack grazie alla sua maggiore flessibilità e alla capacità di essere utilizzata sia come pila che come coda.

Conclusione

La classe Stack è un'implementazione vitale e classica della struttura dati pila in Java. Sapere come e quando utilizzarla è fondamentale per molti algoritmi e applicazioni. Imparare i suoi metodi e caratteristiche è un passo essenziale per diventare uno sviluppatore Java competente.

Happy coding!