Queue
.Como visto na estrutura de dados Stack, a Stack opera com o princípio LIFO (Last-In-First-Out), onde o último elemento a entrar é o primeiro a sair. Agora, vamos direcionar nossa atenção para a intrigante PriorityQueue.
Ao contrário da Stack, a PriorityQueue segue o princípio FIFO (First-In-First-Out). Nesse contexto, o primeiro elemento a entrar é o último a sair, replicando o comportamento de uma fila comum. Essa reviravolta na lógica de ordenação é útil em situações em que a prioridade dos elementos é crucial. O que é útil em situações em que a prioridade dos elementos é crucial.
exemplo em código:
var numbersQueue = new PriorityQueue<Integer>();
numbersQueue.add(2);
numbersQueue.add(3);
numbersQueue.add(5);
System.out.println(numbersQueue);
numbersQueue.poll();
System.out.println(numbersQueue);
[2, 3, 5]
[3, 5]
imagem mental:
1
- Mantém os elementos em ordem natural ou com base em um comparador, permitindo acesso eficiente ao elemento de maior prioridade.2
- Implementa uma fila de prioridade eficiente. FIFO - First In, First Out.1
- Não fornece acesso eficiente a elementos arbitrários; a remoção é restrita ao elemento de maior prioridade.2
- A remoção e atualização de elementos específicos são menos eficientes que em outras estruturas, em termos de flexibilidade.Implementação de filas de prioridade em algoritmos como Dijkstra ou algoritmos de roteamento.
Cenário de uso: Em um sistema de despacho de tarefas, uma PriorityQueue pode ser usada para priorizar e executar tarefas com base em sua urgência ou importância. Como o SQS da AWS, onde as requisições são processadas por ordem de chegada.