Queue (para filas e processamento por ordem)

Queue (para filas e processamento por ordem)
Implementações principais: LinkedList (como fila), PriorityQueue
Motivo: Usada em operações onde a ordem de processamento é importante.

1. O que é Queue?

  • Interface da Java Collections Framework.
  • Representa uma estrutura de dados do tipo fila (FIFO – First In, First Out).
  • Utilizada para processar elementos na ordem em que foram inseridos.

2. Implementações principais

  • 2.1. LinkedList como Queue
  • A classe LinkedList implementa a interface Queue.
  • Pode ser usada como uma fila comum (FIFO).

Exemplo:

import java.util.LinkedList;
import java.util.Queue;
public class QueueExample {
public static void main(String[] args) {
Queue<String> fila = new LinkedList<>();
// Adicionando elementos à fila
fila.add("A");
fila.add("B");
fila.add("C");
System.out.println("Valores da Fila: "); // [A, B, C]
fila.forEach(value -> System.out.println(" " + value));
// Removendo elementos na ordem de chegada (FIFO)
System.out.println("Removido: " + fila.poll()); // A
System.out.println("Nova fila: " + fila); // [B, C]
}
}
import java.util.LinkedList;
import java.util.Queue;

public class QueueExample {
    public static void main(String[] args) {
        Queue<String> fila = new LinkedList<>();

        // Adicionando elementos à fila
        fila.add("A");
        fila.add("B");
        fila.add("C");


        System.out.println("Valores da Fila: "); // [A, B, C]
        fila.forEach(value -> System.out.println(" " + value));


        // Removendo elementos na ordem de chegada (FIFO)
        System.out.println("Removido: " + fila.poll()); // A
        System.out.println("Nova fila: " + fila); // [B, C]
    }
}
import java.util.LinkedList; import java.util.Queue; public class QueueExample { public static void main(String[] args) { Queue<String> fila = new LinkedList<>(); // Adicionando elementos à fila fila.add("A"); fila.add("B"); fila.add("C"); System.out.println("Valores da Fila: "); // [A, B, C] fila.forEach(value -> System.out.println(" " + value)); // Removendo elementos na ordem de chegada (FIFO) System.out.println("Removido: " + fila.poll()); // A System.out.println("Nova fila: " + fila); // [B, C] } }

Enter fullscreen mode Exit fullscreen mode

2.2. PriorityQueue

  • Não garante ordem FIFO, mas ordena os elementos conforme prioridade.
  • Utilizada quando a ordem de processamento depende da prioridade dos elementos.
import java.util.PriorityQueue;
public class PriorityQueueExample {
public static void main(String[] args) {
PriorityQueue<Integer> filaPrioridade = new PriorityQueue<>();
filaPrioridade.add(30);
filaPrioridade.add(10);
filaPrioridade.add(20);
System.out.println("Fila de prioridade: " + filaPrioridade); // A ordem pode não ser óbvia
// Removendo elementos na ordem de prioridade (menor primeiro)
System.out.println("Removido: " + filaPrioridade.poll()); // 10
System.out.println("Removido: " + filaPrioridade.poll()); // 20
System.out.println("Removido: " + filaPrioridade.poll()); // 30
}
}
import java.util.PriorityQueue;

public class PriorityQueueExample {
    public static void main(String[] args) {
        PriorityQueue<Integer> filaPrioridade = new PriorityQueue<>();

        filaPrioridade.add(30);
        filaPrioridade.add(10);
        filaPrioridade.add(20);

        System.out.println("Fila de prioridade: " + filaPrioridade); // A ordem pode não ser óbvia

        // Removendo elementos na ordem de prioridade (menor primeiro)
        System.out.println("Removido: " + filaPrioridade.poll()); // 10
        System.out.println("Removido: " + filaPrioridade.poll()); // 20
        System.out.println("Removido: " + filaPrioridade.poll()); // 30
    }
}
import java.util.PriorityQueue; public class PriorityQueueExample { public static void main(String[] args) { PriorityQueue<Integer> filaPrioridade = new PriorityQueue<>(); filaPrioridade.add(30); filaPrioridade.add(10); filaPrioridade.add(20); System.out.println("Fila de prioridade: " + filaPrioridade); // A ordem pode não ser óbvia // Removendo elementos na ordem de prioridade (menor primeiro) System.out.println("Removido: " + filaPrioridade.poll()); // 10 System.out.println("Removido: " + filaPrioridade.poll()); // 20 System.out.println("Removido: " + filaPrioridade.poll()); // 30 } }

Enter fullscreen mode Exit fullscreen mode

3. Métodos principais de Queue

4. Quando usar Queue?

  • Processamento de tarefas: Exemplo, filas de impressão, filas de pedidos.
  • Sistemas de mensagens: Exemplo, mensagens de chat processadas na ordem de chegada.
  • Algoritmos de busca: Exemplo, BFS (Busca em Largura) em grafos.
  • Eventos em jogos: Exemplo, fila de eventos em jogos multiplayer.

原文链接:Queue (para filas e processamento por ordem)

© 版权声明
THE END
喜欢就支持一下吧
点赞13 分享
Live every day as the last day of life.
把活着的每一天看作生命的最后一天
评论 抢沙发

请登录后发表评论

    暂无评论内容