https://blog.csdn.net/u011386173/article/details/124730572
自定义大根堆的比较器
import java.util.Comparator;
import java.util.PriorityQueue;
public class PriorityQueueComparator {
public static class MaxHeapComparator implements Comparator<Integer> {
@Override
public int compare(Integer o1, Integer o2) {
return o2 - o1;
}
}
public static void main(String[] args) {
//默认小根堆
PriorityQueue<Integer> queue = new PriorityQueue<>();
queue.add(0);
queue.add(5);
System.out.println(queue.peek()); //0
queue.add(7);
queue.add(-1);
System.out.println(queue.peek()); //-1
while (!queue.isEmpty()) {
System.out.println(queue.poll());//-1 0 5 7
}
System.out.println("大根堆");
PriorityQueue<Integer> maxHeap = new PriorityQueue<>(new MaxHeapComparator()); //传入自定义的比较器
maxHeap.add(4);
maxHeap.add(7);
maxHeap.add(0);
System.out.println(maxHeap.peek()); //7
while (!maxHeap.isEmpty()) {
System.out.println(maxHeap.poll()); //7 4 0
}
}
}