PriorityQueue三种重写compare的方法
方法一:
//通过匿名内部类实现Comparator接口,重写compare方法
PriorityQueue<Integer> priorityQueue1 = new PriorityQueue<>(new Comparator<Integer>() {
@Override
public int compare(Integer o1, Integer o2) {
return o2 - o1;
}
});
方法二
//lambda表达式
PriorityQueue<Integer> priorityQueue2 = new PriorityQueue<>((Integer o1, Integer o2) -> {
return o2 - o1;
});
方法三
//定义一个静态内部类,继承Comparator接口,并重写compare方法
class TestDemo {
static class com implements Comparator<Integer> {
@Override
public int compare(Integer o1, Integer o2) {
return o2 - o1;
}
}
public static void main(String[] args) {
PriorityQueue<Integer> priorityQueue=new PriorityQueue<>(new com());
priorityQueue.offer(7);
priorityQueue.offer(1);
priorityQueue.offer(2);
priorityQueue.offer(4);
priorityQueue.offer(3);
priorityQueue.offer(5);
priorityQueue.offer(6);
priorityQueue.offer(8);
// System.out.println(priorityQueue);
while (!priorityQueue.isEmpty()) {
System.out.println(priorityQueue.poll());
}
}
}
PriorityQueue是默认小根堆,三种方法都是重写为大根堆