Publicado em

Classe Stack em Java

Partilhar:

Introdução

A estrutura de dados do tipo "pilha" é uma das mais essenciais em ciência da computação. Em Java, a classe Stack proporciona uma implementação eficiente deste tipo de estrutura.

Características da Classe Stack

  1. LIFO (Last In - First Out): A principal característica da pilha é que o último elemento que é inserido é o primeiro a ser removido.
  2. Dinâmica: A classe Stack cresce e encolhe dinamicamente conforme os elementos são adicionados ou removidos.
  3. Métodos fundamentais: push(), pop() e peek() são os métodos mais utilizados em uma pilha.

Quando usar a Classe Stack?

A pilha é geralmente utilizada em situações onde a ordem de processamento precisa seguir a regra LIFO. Algumas aplicações típicas incluem:

  • Validar expressões com parênteses balanceados.
  • Implementação de funções de "undo" em editores.
  • Navegação de páginas em navegadores web (botões de voltar e avançar).
  • Conversão de expressões infixas para postfixas.
package com.caffeinealgorithm.programaremjava;

import java.util.Stack;

public class ClasseStack {
  private Stack<Integer> pilha = new Stack<>();
  private int multiplicador = 10, numero = 1;

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

    imprimirPilha();

    System.out.printf("\nA remover o número %d da pilha com o método pop().\n\n", pilha.pop());

    imprimirPilha();

    System.out.printf("\nO número que se encontra a seguir para ser removido da pilha é o %d.", pilha.peek());
  }

  private void imprimirPilha() {
    for (int numero : pilha)
      System.out.println(numero);
  }
}

/*
  1
  10
  100
  1000
  10000

  A remover o número 10000 da pilha com o método pop().

  1
  10
  100
  1000

  O número que se encontra a seguir para ser removido da pilha é o 1000.
*/

Métodos Adicionais da Classe Stack

  • isEmpty(): Retorna verdadeiro se a pilha estiver vazia.
  • search(Object o): Retorna a posição de um objeto na pilha, com a contagem começando do topo (o elemento 1 é o topo).
  • size(): Retorna o número de elementos na pilha.
  • clear(): Remove todos os elementos da pilha.

Limitações e Considerações

Enquanto a classe Stack é útil, em muitos cenários modernos, é preferível usar a classe Deque em vez da Stack devido à sua maior flexibilidade e capacidade de ser utilizada tanto como pilha quanto como fila.

Conclusão

A classe Stack é uma implementação vital e clássica da estrutura de dados pilha em Java. Saber como e quando usá-la é crucial para muitos algoritmos e aplicações. Aprender os seus métodos e características é um passo essencial para se tornar um desenvolvedor Java competente.

Happy coding!