Что такое приоритетная очередь и для чего она нужна - PullRequest
0 голосов
/ 29 августа 2018

Когда мы кодируем и используем очередь с приоритетами, что именно означает приоритет? Это что-то абстрактное или конкретное, например сортировка по высоте разных зданий? В чем преимущество использования очереди с приоритетами?

Ответы [ 3 ]

0 голосов
/ 29 августа 2018

Вы можете определить приоритет, позволив элементам реализовать интерфейс Comparable и предложив Comparator для построения очереди, см. doc :

Элементы очереди приоритетов упорядочены в соответствии с их естественный порядок или компаратором, предоставленным при построении очереди время.

0 голосов
/ 29 августа 2018

Обычная очередь обрабатывает элементы в порядке очереди. Очереди приоритетов определяют порядок обслуживания на основе приоритетов элементов. При наличии очереди приоритетов следующим элементом, который будет рассматриваться, будет элемент с наивысшим приоритетом.

Примеры:

  • Авиакомпания борт "клиентов первого класса" до "эконом-класса"
  • Больничные отделения неотложной помощи, прежде чем смотреть на других пациентов, решают проблемы с сердечными приступами, кровоизлияниями и проблемами с дыханием
  • Многие рестораны будут размещать VIP-персон перед постоянными клиентами, даже если у последних есть резервирование.

Это нечто конкретное, оно определяет реальные операции системы. Ваша работа как программиста состоит в том, чтобы идентифицировать и отражать это реальное поведение, предоставляя упорядочивающее свойство. В Java это делается путем создания объектов Comparable или предоставления Comparator.

0 голосов
/ 29 августа 2018

с учетом того, что один из конструкторов принимает Comparator ... это становится очевидным по сравнению с чем. По умолчанию, если не указано иное, используется Comparator.naturalOrder()

...