首页 笔记 图片 查字 
所属分类:Java
浏览:31
内容:

参考:
https://blog.csdn.net/weixin_73616913/article/details/131361059

package java.util;
public class PriorityQueue<E> extends AbstractQueue<E>
    implements java.io.Serializable

要点:
Java 集合框架中提供了 PriorityQueue 和 PriorityBlockingQueue 两种类型的优先级队列,PriorityQueue是线程不安全的,PriorityBlockingQueue是线程安全的。
PriorityQueue 队列中元素必须要能够比较大小,不能插入无法比较大小的对象,否则会抛出 ClassCastException 异常。
PriorityQueue 队列不能插入null对象,否则会抛出 NullPointerException。
PriorityQueue 队列没有容量限制,可以插入任意多个元素,其内部可以自动扩容。
PriorityQueue 队列插入和删除元素的时间复杂度为O(log n)。
PriorityQueue 队列底层使用了 堆数据结构。
PriorityQueue 队列默认使用小顶堆,每次调用poll返回的元素都是最小的元素。

使用代码:
PriorityQueue<Integer> priorityQueue = new PriorityQueue<Integer>();
priorityQueue.offer(2);
priorityQueue.offer(5);
priorityQueue.offer(1);
priorityQueue.offer(11);
priorityQueue.offer(9);
priorityQueue.offer(8);

int i;
i = priorityQueue.poll();
System.out.println(i);

i = priorityQueue.poll();
System.out.println(i);

i = priorityQueue.poll();
System.out.println(i);

i = priorityQueue.poll();
System.out.println(i);

i = priorityQueue.poll();
System.out.println(i);

i = priorityQueue.poll();
System.out.println(i);

i = priorityQueue.poll();
System.out.println(i);

输出:
1
2
5
8
9
11