Почему некоторые люди переопределяют функцию компаратора для реализации minheap с использованием PriorityQueue, даже если PQ в java по умолчанию является min-heap? - PullRequest
0 голосов
/ 06 февраля 2019

Я немного искал и выглядит как PriorityQueue, работающий как мини-куча по умолчанию в Java.Итак, зачем переопределять компаратор?Я видел, как люди делают это даже для целых чисел.Я что-то здесь упускаю?Я новичок в java.

Я попробовал оба приведенных ниже кода для использования в решении leetcode, требующем реализации min-heap, и оба были приняты.Вот фрагмент кода:

// Implementing comparator
PriorityQueue<Integer> minHeap = new PriorityQueue<>(10,new Comparator<Integer>() {
    public int compare(Integer a, Integer b) {
        return a - b;
    }
});

// Not implementing comparator - why can't we just do this?
PriorityQueue<Integer> minHeap = new PriorityQueue<>();

1 Ответ

0 голосов
/ 06 февраля 2019

В этом случае Comparator действительно кажется избыточным.Если вы явно не передадите Comparator конструктору PriorityQueue, он будет использовать естественное упорядочение, которое в точности реализует Comparator.

...