A Queue (Fila) é uma estrutura de dados que segue o princípio FIFO – First In, First Out:

o primeiro a entrar é o primeiro a sair.

📘 Em Java, Queue pertence ao pacote java.util e é amplamente utilizada quando a ordem de processamento é fundamental — filas de atendimento, eventos, tarefas assíncronas e muito mais.


🔑 1. Princípio FIFO — First In, First Out

O primeiro elemento inserido é sempre o primeiro a ser removido.

📌 Como uma fila organizada de missões — quem chega primeiro recebe a tarefa primeiro.


🧱 2. Implementações mais comuns de Queue

Implementação Características
🔗 LinkedList Estrutura encadeada; boa para inserção e remoção
PriorityQueue Ordena por prioridade natural ou customizada
📚 ArrayDeque Implementação moderna, eficiente e sem limite fixo

🛠️ 3. Operações fundamentais da Queue

Método Comportamento
add() Insere; lança exceção caso falhe
offer() Insere de forma segura (retorna false em vez de lançar erro)
poll() Remove e retorna o primeiro elemento
peek() Retorna o primeiro elemento sem remover

Dica: Prefira offer() e poll() para produção → métodos mais seguros.


🧪 4. Exemplo prático — Fila de Missões (tema ninja leve)

import java.util.LinkedList;
import java.util.Queue;

public class FilaDeMissoes {
    public static void main(String[] args) {

        // Criando a fila de missões
        Queue<String> fila = new LinkedList<>();

        // Inserindo elementos
        fila.add("Operativo A");
        fila.add("Operativo B");
        fila.add("Operativo C");
        fila.add("Operativo D");

        System.out.println("📋 Ordem da fila:");
        fila.forEach(n -> System.out.println("➡️ " + n));

        // Verificando o primeiro da fila
        System.out.println("\\n👀 Primeiro da fila: " + fila.peek());

        // Processando
        System.out.println("\\n✅ Processando:");
        while (!fila.isEmpty()) {
            System.out.println("🛡️ Missão atribuída a: " + fila.poll());
        }

        System.out.println("\\n🚫 Fila vazia? " + fila.isEmpty());
    }
}


📌 Saída esperada

📋 Ordem da fila:
➡️ Operativo A
➡️ Operativo B
➡️ Operativo C
➡️ Operativo D

👀 Primeiro da fila: Operativo A

✅ Processando:
🛡️ Missão atribuída a: Operativo A
🛡️ Missão atribuída a: Operativo B
🛡️ Missão atribuída a: Operativo C
🛡️ Missão atribuída a: Operativo D

🚫 Fila vazia? true