比较标准的队列实现类PriorityQueue
2016-09-11 15:33
357 查看
PriorityQueue是一个比较标准的队列实现类,之所以说它是比较标准的队列实现,而不是绝对标准的队列实现。是因为:PriorityQueue保存队列元素的顺序并不是按加入队列的顺序,而是按队列元素的大小进行重新排序。因此当调用peek方法或者poll方法来取出队列中的元素时,并不是取出最先进入队列的元素是,而是取出队列中最小的元素。
1 代码示例
2 运行结果
[-3, 6, 20, 18]
-3
6
18
20
3 代码分析
运行代码输出PriorityQueue集合时,可能看到该队列里的元素并没有很好地按大小进行排序,但这只是受到PriorityQueue的toString方法的返回值的影响。实际上,程序多次调用PriorityQueue集合对象的poll方法时,即可看到元素从小到大的顺序“移出队列”。
1 代码示例
import java.util.*; public class PriorityQueueTest { public static void main(String[] args) { PriorityQueue pq = new PriorityQueue(); // 下面代码依次向pq中加入四个元素 pq.offer(6); pq.offer(-3); pq.offer(20); pq.offer(18); // 输出pq队列,并不是按元素的加入顺序排列 System.out.println(pq); // 输出[-3, 6, 20, 18] // 访问队列第一个元素,其实就是队列中最小的元素:-3 System.out.println(pq.poll()); System.out.println(pq.poll()); System.out.println(pq.poll()); System.out.println(pq.poll()); } }
2 运行结果
[-3, 6, 20, 18]
-3
6
18
20
3 代码分析
运行代码输出PriorityQueue集合时,可能看到该队列里的元素并没有很好地按大小进行排序,但这只是受到PriorityQueue的toString方法的返回值的影响。实际上,程序多次调用PriorityQueue集合对象的poll方法时,即可看到元素从小到大的顺序“移出队列”。
相关文章推荐
- 比较标准的队列实现类PriorityQueue
- 主流数据库之间对SQL:2003标准的不同实现方法比较(第二部分 结果集排序)
- 主流数据库之间对SQL:2003标准的不同实现方法比较(第四部分 查询结果集中间n行数据)
- 数据结构-栈&队列&Deque实现比较
- 主流数据库之间对SQL:2003标准的不同实现方法比较(第一部分 视图View与连接Join)
- LinkedList 实现栈与队列,比较简单
- 主流数据库之间对SQL:2003标准的不同实现方法比较(第五部分 Insert语句)
- java之中PriorityQueue实现原理(具有优先级的队列)
- 基于堆实现的优先级队列:PriorityQueue 解决 Top K 问题
- PriorityQueue 优先队列的实现
- java-集合(4)-用LinkedList来实现栈/队列-ArrayList和LinkedList比较
- 主流数据库之间对SQL:2003标准的不同实现方法比较(第三部分 前n项(Top-n)查询)
- WebOb和通用标准实现WSGI框架的比较
- cc150:使用两个栈实现一个队列(两种方法比较)
- 优先队列 PriorityQueue (用堆实现的)
- 利用优先队列PriorityQueue实现Prim算法
- 在Visual C++ 6.0下显示JPEG、GIF等格式标准的图像的一种实现起来比较简便的方法
- 使用并查集UnionFind和优先队列PriorityQueue实现Kruskal算法
- 主流数据库之间对SQL:2003标准的不同实现方法比较(第二部分 结果集排序)