PriorityQueue是jdk1.5开始提供的优先队列,是一个优先“有序”的队列。通过其定义我们能得到如下特点:
1.元素有序,默认自然序,也就是数字默认是小的在队列头,字符串则按字典序排列,可以自定义comparator来自定义优先级
2.非线程安全,如果要并发修改要使用
java.util.concurrent.PriorityBlockingQueue
3.PriorityQueue是基于最小堆实现的数据结构,其逻辑结构是一棵完全二叉树,存储结构其实是一个数组。
4.PriorityQueue,也叫优先级队列,它是不同于先进先出队列的另一种队列。每次从队列中取出的是具有最高优先权的元素。
看到这里我们会觉得那这是除了TreeMap, TreeSet等有序容器之外又一个有序容器。实际上真的是这样吗,我们通过一个例子看一下。
public class PriorityQueueFunc {
public static void getPriQueueNumsAsc(){
PriorityQueue<Integer> pqueue = new PriorityQueue<>(new Comparator<Integer>() {
@Override
public int compare(Integer o1, Integer o2) {
return o2.compareTo(o1);
}
});
pqueue.add(10);
pqueue.add(2);