Класс PriorityQueue

PriorityQueue – это класс очереди с приоритетами. По умолчанию очередь с приоритетами размещает элементы согласно естественному порядку сортировки используя Comparable. Элементу с наименьшим значением присваивается наибольший приоритет. Если несколько элементов имеют одинаковый наивысший элемент – связь определяется произвольно. Также можно указать специальный порядок размещения, используя Comparator.

Основные характеристики:

 
Приоритетная сортировка: PriorityQueue автоматически упорядочивает элементы внутри очереди в соответствии с их приоритетами, что обеспечивает быстрый доступ к элементу с наивысшим приоритетом.
 
Реализация интерфейса Queue: Класс реализует интерфейс Queue, предоставляя стандартные методы для добавления, извлечения и проверки наличия элементов в очереди.
 
Гибкость в управлении приоритетами: PriorityQueue позволяет разработчикам определять приоритеты элементов с использованием собственных компараторов или встроенных в класс сравнений.
 
Быстрый доступ к элементу с наивысшим приоритетом: Операции добавления и извлечения элементов с наивысшим приоритетом выполняются за время O(log n), что обеспечивает высокую производительность.
 
Использование в алгоритмах обработки событий: PriorityQueue часто применяется в алгоритмах обработки событий, планировщиках задач и других сценариях, где необходимо эффективное управление порядком выполнения задач.
 
Автоматическое обновление при изменении приоритетов: PriorityQueue автоматически поддерживает изменение приоритетов элементов при их модификации, что делает его удобным для динамических приложений.
 
Этот класс предоставляет программистам мощное средство для работы с элементами в соответствии с их приоритетами, обеспечивая эффективное управление данными в контексте приоритетных задач.

Конструкторы класса PriorityQueue:

  • PriorityQueue() - создает очередь с приоритетами начальной емкостью 11, размещающую элементы согласно естественному порядку сортировки (Comparable);
  • PriorityQueue(Collection<? extends E> c);
  • PriorityQueue(int initialCapacity);
  • PriorityQueue(int initialCapacity, Comparator<? super E> comparator);
  • PriorityQueue(PriorityQueue<? extends E> c);
  • PriorityQueue(SortedSet<? extends E> c).

Пример 1. Использование класса PriorityQueue

import java.util.Collections;
import java.util.PriorityQueue;
import java.util.Queue;

public class PriorityQueueExample {
    public static void main(String[] args) {
        Queue<String> queue1 = new PriorityQueue<>();
        queue1.offer("Киев");
        queue1.offer("Харьков");
        queue1.offer("Львов");
        queue1.offer("Кременчуг");
        queue1.offer("Кременчуг");
        System.out.print("Priority queue с Comparable: ");
        while (queue1.size() > 0) {
            System.out.print(queue1.remove() + " ");
        }
        System.out.println();

        PriorityQueue<String> queue2
                = new PriorityQueue<>(5, Collections.reverseOrder());
        queue2.offer("Киев");
        queue2.offer("Харьков");
        queue2.offer("Львов");
        queue2.offer("Кременчуг");
        queue2.offer("Кременчуг");
        System.out.print("Priority queue с Comparator: ");
        while (queue2.size() > 0) {
            System.out.print(queue2.remove() + " ");
        }
    }
}
Read also:
Trustpilot
Trustpilot
Comments