首页 > 代码库 > 初识java集合——队列

初识java集合——队列

有两个端头的队列,称为双端队列。可以让人们有效的在头部和尾部同时添加或删除元素
* 不支持在队列中间添加元素
*
*【 优先级队列】
* 可以按照任意的顺序插入,却总是按照排序的顺序进行检索,无论何时调用remove,返回的是
* 当前优先队列中最小的元素,然而优先级队列并没有对所有元素进行排序
* 如果用迭代器的方式,处理这些元素,并不需要对他们进行排序
*
* 优先级队列使用了堆(heap)这个优雅高效的数据结构,对树执行添加和删除操作时,最小的元素总能
* 移动到根节点
*
* 与TreeSet一样,优先级队列既可以保存实现了Comparable接口的类对象,也可以保存在构造器中
* 提供比较器的对象
*
* 优先级队列常常用于任务调度,每当启动一个任务的时候,都将优先级最高的任务从队列中删除(习惯上
* 将1设为“最高”优先级,所以会将最小的元素删除)
* */

 

 1 //priorityQueue
 2 public static void main(String[] args) {
 3     PriorityQueue<GregorianCalendar> pq = new PriorityQueue<>();
 4     pq.add(new GregorianCalendar(1906, Calendar.DECEMBER, 9));
 5     pq.add(new GregorianCalendar(1815, Calendar.DECEMBER, 10));
 6     pq.add(new GregorianCalendar(1903, Calendar.DECEMBER, 3));
 7     pq.add(new GregorianCalendar(1910, Calendar.JUNE, 22));
 8     
 9     System.out.println("Iterator over elements...");
10     for(GregorianCalendar g : pq) {
11         System.out.println(g.get(Calendar.YEAR));
12     }
13     
14     System.out.println("Removing elements...");
15     while(!pq.isEmpty()) {
16         System.out.println(pq.remove().get(Calendar.YEAR));
17     }
18 }

 

初识java集合——队列