java.util.Queue是一个interface,由LinkedList实现,所以在申明一个Queue时,使用的是如下的语句:
1 Queue q=new LinkedList();
这个interface一共有6个method,如下图所示:
有时候我们需要优先队列,也就是PriorityQueue,运行起来如同Queue一样,不需要学习新的method,但是由于存在了优先级,就必须提供一个用于比较的方法,PriorityQueue使用Comparator这个interface来排序它的项目,如果没有指定Comparator,你会得到所谓的“自然排序”,两种代码如下:
1 PriorityQueue<Integer> pq=new PriorityQueue<Integer>(20);//自然排序的方法,其中20是这个队列的大小
2
3 PriorityQueue<Integer> pqc=new PriorityQueue<Integer>(20,//使用自定义排序的方法实现
4 new Comparator<Integer>(){
5 @Override
6 public int compare(Integer a1, Integer a2) {
7 //根据第一个参数小于、等于或大于第二个参数分别返回负整数、零或正整数
8 return 0;
9 }
10 });
如果不指定Comparator,那么PriorityQueue将会由最低排最高。