PriorityQueue(优先队列)
- 是一个基于优先级堆的无界优先级队列,底层实现是一棵完全二叉树
- 不允许使用 null 元素
- 不允许插入不可比较的对象,会导致 ClassCastException。
- 优先级队列是无界的,但是有一个内部容量,默认容量为11,控制着用于存储队列元素的数组大小。它通常至少等于队列的大小。随着不断向优先级队列添加元素,其容量会自动增加
- PriorityQueue 线程不安全,想线程安全用 PriorityBlockingQueue 类
实现小顶堆
PriorityQueue<Integer> minheap = new PriorityQueue<Integer>();
实现大顶堆
PriorityQueue<Integer> maxheap = new PriorityQueue<Integer>(new Comparator<Integer>(){
@Override
public int compare(Integer i1,Integer i2){
return i2-i1;
}
});
PriorityQueue<Integer> maxheap = new PriorityQueue<>((i1, i2) -> i2 - i1);