Gymterview
middle

Что позволяет сделать PriorityQueue

PriorityQueue — это реализация очереди с приоритетами, в которой элементы извлекаются не в порядке вставки (FIFO), а в порядке их приоритета. Внутри она реализована как бинарная куча (min-heap).

По умолчанию элементы упорядочиваются по natural ordering (через Comparable), но порядок можно переопределить, передав Comparator в конструктор. Элемент с наименьшим значением (или наивысшим приоритетом) всегда находится в голове очереди.

Сложность операций: offer() и poll() — O(log N), peek() — O(1). PriorityQueue не допускает null-элементы и не гарантирует порядок итерации (итератор может возвращать элементы в произвольном порядке).

Практические применения: алгоритм Дейкстры, планировщик задач, обработка событий по приоритету, задачи на поиск K наименьших/наибольших элементов.

На собеседовании: скажите, что PriorityQueue — это min-heap. Назовите сложности операций и приведите пример использования (Дейкстра или top-K).