今天刷剑指offer的时候又用到了大顶堆和小顶堆,顺便回忆一下,还发现可以使用PriorityQueue来实现,想起来上次用的时候还是自己手写的堆。
java中的PriorityQueue默认情况下是小顶堆
Queue<Integer>A=new PriorityQueue<>()
下面是大顶堆的写法,
A=new PriorityQueue<>(new Comparator<Integer>() {
@Override
public int compare(Integer o1, Integer o2) {
// TODO 自动生成的方法存根
return o2-o1;
}
});
当然还有更简便的写法,
B=new PriorityQueue<>((x,y) -> (y-x));
其实这两个大顶堆的写法实际都是一样的,都是传入一个比较器,只不过上面那个是匿名内部类型的方式,下面这个是lamdba表达式的写法。