Dominando a Interface Deque do Java: Recursos, Métodos e Exemplos Práticos
Interface Deque do Java
Descubra como a interface Deque do Java fornece uma fila de duas pontas versátil e aprenda a aproveitar seus métodos poderosos em código real.
Como o Deque Funciona
Diferente de uma fila convencional, que só enfileira no final e desenfileira do início, um Deque (fila de duas pontas) permite adicionar e remover elementos de ambas as extremidades. Essa flexibilidade o torna ideal para padrões LIFO, FIFO e de manipulação de dados mais complexos.
Classes que Implementam Deque
Para trabalhar com um Deque, escolha uma das seguintes implementações concretas:
- ArrayDeque – um array redimensionável que oferece acesso rápido e não sincronizado.
- LinkedList – uma lista duplamente encadeada que suporta elementos null e fornece desempenho robusto de inserção.
Usando Deque no Seu Código
Primeiro, importe a interface:
import java.util.Deque;
Então instancie uma classe concreta:
// Implementação com Array
Deque<String> animal1 = new ArrayDeque<>();
// Implementação com LinkedList
Deque<String> animal2 = new LinkedList<>();
Esses objetos agora expõem todas as operações Deque.
Principais Métodos do Deque
Como Deque estende Queue, herda todos os métodos de fila. Além disso, fornece operações especializadas para ambas as extremidades:
- addFirst(e) – Insere
eno início, lançando exceção se o deque estiver cheio. - addLast(e) – Anexa
eno final, lançando exceção se cheio. - offerFirst(e) – Tenta inserir no início, retornando
falsese cheio. - offerLast(e) – Tenta anexar no final, retornando
falsese cheio. - getFirst() / getLast() – Recupera o primeiro/último elemento, lançando exceção se o deque estiver vazio.
- peekFirst() / peekLast() – Recupera o primeiro/último elemento, retornando
nullquando vazio. - removeFirst() / removeLast() – Remove e retorna o primeiro/último elemento, lançando exceção quando vazio.
- pollFirst() / pollLast() – Remove e retorna o primeiro/último elemento, retornando
nullse vazio.
Deque como Pilha (Stack)
A classe legada Stack é sincronizada e menos eficiente. Deque oferece uma alternativa moderna, não sincronizada:
push(e)– Adicionaeao início.pop()– Remove e retorna o elemento do início.peek()– Recupera o elemento do início sem remoção.
Exemplo Prático com ArrayDeque
import java.util.Deque;
import java.util.ArrayDeque;
class Main {
public static void main(String[] args) {
Deque<Integer> numeros = new ArrayDeque<>();
// Popular o deque
numeros.offer(1); // cauda
numeros.offerLast(2); // cauda
numeros.offerFirst(3); // cabeça
System.out.println("Deque: " + numeros);
// Olhar ambas as extremidades
System.out.println("Primeiro Elemento: " + numeros.peekFirst());
System.out.println("Último Elemento: " + numeros.peekLast());
// Remover elementos
System.out.println("Primeiro Elemento Removido: " + numeros.pollFirst());
System.out.println("Último Elemento Removido: " + numeros.pollLast());
System.out.println("Deque Atualizado: " + numeros);
}
}
Saída
Deque: [3, 1, 2] Primeiro Elemento: 3 Último Elemento: 2 Primeiro Elemento Removido: 3 Último Elemento Removido: 2 Deque Atualizado: [1]
Para insights mais profundos, explore a documentação oficial do Java ArrayDeque.
Java
- Dominando Interfaces em C#: Definição, Implementação e Casos Práticos
- Dominando Operadores Java: Tipos, Sintaxe e Exemplos Práticos
- Dominando Interfaces em Java: Conceitos, Implementação e Boas Práticas
- Dominando Try-With-Resources em Java: Gerenciamento Automático de Recursos Explicado
- Anotações em Java Explicadas: Tipos, Posicionamento e Exemplos Práticos
- Dominando a Interface NavigableSet do Java: Navegação, Ordenação e Exemplos Práticos
- Interface vs Classe Abstrata em Java: Como Escolher a Abstração Certa
- Entendendo Interfaces em Java: Definições, Usos e Boas Práticas
- Java 9 Métodos Privados em Interfaces: Aumentando Encapsulamento e Reuso de Código
- Dominando Interfaces em C#: Contratos de Design para POO Robusta