Что позволяет сделать 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).