Maxheap против приоритета очереди путаницы
Предположим, мы хотим отсортировать хэш-карту на основе значения. Для этого мы реализуем приоритетную очередь с компаратором. В результате полученный pq сортируется от наибольшего к наименьшему от индекса 0 до конца.
Вот код:
PriorityQueue<Map.Entry<Integer, Integer>> pq = new PriorityQueue<Map.Entry<Integer, Integer>>(
new Comparator<Map.Entry<Integer, Integer>>() {
@Override
public int compare(Entry<Integer, Integer> o1, Entry<Integer, Integer> o2) {
return o2.getValue() - o1.getValue();
}
});
Однако кто-то сказал, что это maxheap, я понимаю, что heap - это просто родительское значение, большее, чем дочернее значение, но я не могу понять, почему это maxheap? Это просто реализация компаратора в приоритетном порядке? Какое это имеет отношение к куче?
1 ответ
Решение
Внутренняя структура приоритетной очереди в Java является кучей.
Этот компаратор будет использоваться для сравнения с родительским значением в очереди приоритетов.