Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Industrial programming >> Java

Classe Stack do Java – Guia Completo de Uso e Métodos

Classe Stack do Java

Este tutorial explica a classe Stack do Java, seus métodos principais e exemplos práticos para dominar operações de pilha.

O framework de coleções do Java inclui uma classe Stack que implementa a clássica estrutura de dados pilha. Segundo a documentação oficial do Java, o Stack estende Vector, herdando todos os seus métodos enquanto adiciona operações específicas de pilha.

Implementação da Stack

Uma pilha segue o princípio Last In, First Out (LIFO - Último a Entrar, Primeiro a Sair): elementos são empilhados no topo e desempilhados do topo. O diagrama a seguir ilustra esse comportamento.

Criando uma Stack

Para criar uma pilha, importe java.util.Stack e instancie com o tipo genérico desejado:

Stack<Tipo> pilha = new Stack<>();

Exemplos:

// Pilha de inteiros
Stack<Integer> pilhaInt = new Stack<>();
// Pilha de strings
Stack<String> pilhaString = new Stack<>();

Métodos da Stack

Além dos métodos herdados do Vector, o Stack fornece cinco operações dedicadas que o distinguem de coleções genéricas. Para uma lista completa dos métodos do Vector, consulte a documentação da classe Vector.

Método push()

O método push() adiciona um elemento ao topo da pilha.

import java.util.Stack;
class Main {
    public static void main(String[] args) {
        Stack<String> animais = new Stack<>();
        animais.push("Cachorro");
        animais.push("Cavalo");
        animais.push("Gato");
        System.out.println("Stack: " + animais);
    }
}

Saída

Stack: [Cachorro, Cavalo, Gato]

Método pop()

O método pop() remove e retorna o elemento no topo da pilha.

import java.util.Stack;
class Main {
    public static void main(String[] args) {
        Stack<String> animais = new Stack<>();
        animais.push("Cachorro");
        animais.push("Cavalo");
        animais.push("Gato");
        System.out.println("Stack Inicial: " + animais);
        String removido = animais.pop();
        System.out.println("Elemento Removido: " + removido);
    }
}

Saída

Stack Inicial: [Cachorro, Cavalo, Gato] Elemento Removido: Gato

Método peek()

O método peek() recupera o elemento do topo sem removê-lo.

import java.util.Stack;
class Main {
    public static void main(String[] args) {
        Stack<String> animais = new Stack<>();
        animais.push("Cachorro");
        animais.push("Cavalo");
        animais.push("Gato");
        System.out.println("Stack: " + animais);
        String topo = animais.peek();
        System.out.println("Elemento no topo: " + topo);
    }
}

Saída

Stack: [Cachorro, Cavalo, Gato] Elemento no topo: Gato

Método search()

O método search() retorna a posição baseada em 1 de um elemento a partir do topo da pilha, ou -1 se não estiver presente.

import java.util.Stack;
class Main {
    public static void main(String[] args) {
        Stack<String> animais = new Stack<>();
        animais.push("Cachorro");
        animais.push("Cavalo");
        animais.push("Gato");
        System.out.println("Stack: " + animais);
        int pos = animais.search("Cavalo");
        System.out.println("Posição do Cavalo: " + pos);
    }
}

Saída

Stack: [Cachorro, Cavalo, Gato] Posição do Cavalo: 2

Método empty()

O método empty() verifica se a pilha possui elementos.

import java.util.Stack;
class Main {
    public static void main(String[] args) {
        Stack<String> animais = new Stack<>();
        animais.push("Cachorro");
        animais.push("Cavalo");
        animais.push("Gato");
        System.out.println("Stack: " + animais);
        boolean vazia = animais.empty();
        System.out.println("A pilha está vazia? " + vazia);
    }
}

Saída

Stack: [Cachorro, Cavalo, Gato] A pilha está vazia? false

Use ArrayDeque em Vez de Stack

Embora o Stack implemente uma pilha, ele é considerado legado. O código Java moderno prefere ArrayDeque (implementando a interface Deque) para funcionalidade de pilha porque oferece melhor desempenho e semântica mais clara. Para mais detalhes, veja:

Java

  1. Entendendo a Palavra-chave final em Java: Variáveis, Métodos e Classes
  2. Operador instanceof em Java: Guia Completo
  3. Dominando Herança em Java: Conceitos, Tipos e Exemplos Práticos
  4. Entendendo Classes Aninhadas Estáticas em Java: Uso, Diferenças e Exemplos
  5. Dominando Classes Internas Anônimas em Java: Definição, Sintaxe e Exemplos Práticos
  6. Padrão Singleton em Java Explicado: Como Implementar e Usar com Segurança
  7. Dominando Reflection em Java: Inspecionando Classes, Métodos e Campos em Tempo de Execução
  8. Dominando Java ObjectOutputStream: Serialização, Métodos e Exemplos Práticos
  9. Dominando Java Generics – Construindo Código Reutilizável e Type-Safe
  10. Dominando Operações de Arquivo em Java com java.io – Criação, Leitura, Escrita e Exclusão