Из документов Java для приоритетной очереди ;
Неограниченная приоритетная очередь, основанная на куче приоритетов. Элементы очереди с приоритетами упорядочиваются в соответствии с их естественным порядком или компаратором, предоставляемым во время построения очереди, в зависимости от того, какой конструктор используется. Очередь приоритетов не разрешает нулевые элементы. Очередь приоритетов, основанная на естественном упорядочении, также не позволяет вставлять несопоставимые объекты (это может привести к ClassCastException).
Заголовок этой очереди является наименьшим элементом по отношению к указанному упорядочению. Если несколько элементов связаны для наименьшего значения, один из этих элементов является заголовком - связи нарушаются произвольно. Операции извлечения очереди опрашивают, удаляют, просматривают и элемент обращаются к элементу в начале очереди.
Если вы хотите хранить элементы, которые не имеют естественного упорядочения, вы можете либо заставить их реализовать интерфейс Comparable
, либо передать Comparator
в конструктор. Порядок увеличения / уменьшения зависит от поведения Comparator.
. Этот метод указывает результат сравнения, возвращая целое число. Сравнение Object A
с Object B
должно вернуть 0
, если два объекта равны, целое число, равное > 0
, если Object A > Object B
, и целое число, равное < 0
, если Object A < Object B
.
* 1021. * Если вы следуете этой процедуре, приоритетная очередь будет хранить элементы в возрастающем порядке, то есть наименьший элемент будет находиться во главе. Если вы хотите сохранить самый большой элемент в начале очереди, ваш компаратор должен работать обратно, например, вместо того, чтобы возвращать целое число, равное
> 0
, когда
Object A > Object B
, вернуть целое число, равное
< 0
, и вернуть целое число, которое
> 0
, когда
Object A < Object B
.
Если ваша очередь хранит целые числа, int a - int b
вернет > 0
, когда a > b
, вернет 0
, когда a == b
, и вернет < 0
, когда a < b
, вот почему это работает. Вы можете вернуть int b - int a
, чтобы изменить порядок очередности.