一, 概述
PriorityQueue 并没有直接实现 Queue接口,而是通过继承 AbstractQueue 类来实现 Queue 接口的一些方法,在 Java 定义中,PriorityQueue 是一个基于优先级的无界优先队列。
通俗的说,添加到 PriorityQueue 队列里面的元素都经过了排序处理,默认按照自然顺序,也可以通过 Comparator 接口进行自定义排序
。
PriorityQueue 是采用树形结构来描述元素的存储,具体说是通过完全二叉树实现一个小顶堆,在物理存储方面,PriorityQueue 底层通过数组来实现元素的存储。
二, 源码分析
三, 常用方法
四, 总结
在 Java 中 PriorityQueue 是一个使用数组结构来存储元素
的优先队列,虽然它也实现了Queue接口,但是元素存取并不是先进先出
,而是通过一个二叉小顶堆
实现的,默认底层使用自然排序规则给插入的元素进行排序,也可以使用自定义比较器来实现排序,每次取出的元素都是队列中权值最小的。
同时需要注意的是,PriorityQueue 不能插入null,否则报空指针异常!
ityQueue 不能插入null,否则报空指针异常!