PriorityQueue 是基于堆的一个无界队列,不允许插入不可比较的对象,否则会抛出 ClassCastException 异常(如果队列只有一个元素则不会报错,因为此时没有比较);也不允许插入 null,否则会抛出NullPointerException。

    PriorityQueue 是非线程安全的,如果想要在多线程的环境下使用,可以使用 PriorityBlockingQueue
    默认容量11

    1. peek()//返回队首元素
    2. poll()//返回队首元素,队首元素出队列
    3. add()//添加元素
    4. size()//返回队列元素个数
    5. isEmpty()//判断队列是否为空,为空返回true,不空返回false

    PriorityQueue 是基于最小堆原理实现。最小堆是一种经过排序的完全二叉树,其中任一非终端节点的数据值均不大于其左子节点和右子节的值。