- 介绍
Java 的优先级队列始于 1.5版本,出自Josh Bloch和Doug Lea两位大师的手笔。
优先级队列是一个很重要的数据结构,像最短路的dijkstra之类的图算法,以及调度等等都依赖于优先级队列。
实现优先级队列的数据结构堆也是最基本也是最重要的一种树状数据结构,理解好堆对理解好树,尤其是后续的各种旋转节点的操作很有帮助。
掌握优先级队列很重要,而这份代码出自java 团队最负盛名的两位大师,拜读的意义也是不言而喻。
如果不清楚Priority Queue具体是做什么的,先看这个链接。
我们要分析的代码为:util.PriorityQueue.java
网络上面有几篇分析这份代码的文章,但绝大部分都是走一些流程,没有点出来最重要的技巧和知识点,以及提炼一些值得我们学习的地方,希望我的一些浅见能够让大家更接近这些部分。
- 接口
优先级队列主要是以下几个接口:
void enqueue(E ele);
E dequeue();
E peek();
额外的一个,不属于基本操作的:
E delete(E ele);
如果我们抛开作者已经使用的堆这个数据结构
-----
未完成,待续