这是java类库中的一个,里面有很多方法,看帮助文档就知道,一下举出几个例子来更好的了解PriorityQueue的用法
例子一:
- import java.util.*;
- @SuppressWarnings("rawtypes")
- class Mouse implements Comparable {
- public int i;
- Mouse(int i){
- this.i=i;
- }
- public String toString(){
- return "Mouse "+i;
- }
- public int compareTo(Object o){
- assert ((o!=null)&&(o instanceof Mouse));
- return new Integer(i).compareTo(((Mouse)o).i);
- }
- }
- public class TestQueue {
- public static void main(String[] args){
- Queue<Mouse> queue1=new PriorityQueue<Mouse>();
- PriorityQueue<Mouse> queue2 = new PriorityQueue<Mouse>(1, new Comparator<Mouse>()// 大数在队列头
- {
- public int compare(Mouse o1, Mouse o2)
- {
- return o2.i- o1.i;
- }
- });
- for(int i=5;i> -1;i--){
- queue1.add(new Mouse(i));
- queue2.add(new Mouse(i));
- }
- for(int i=5;i>-1;i--)
- System.out.println(queue1.poll());
- for(int i=5;i>-1;i--)
- System.out.println(queue2.poll());
- }
- }
例子二:
- import java.util.Comparator;
- import java.util.PriorityQueue;
- enum ProductQuality {
- High, Medium, Low
- }
- class Product implements Comparable<Product> {
- String name;
- ProductQuality priority;
- Product(String str, ProductQuality pri) {
- name = str;
- priority = pri;
- }
- public int compareTo(Product msg2) {
- return priority.compareTo(msg2.priority);
- }
- }
- class MessageComparator implements Comparator<Product> {
- public int compare(Product msg1, Product msg2) {
- return msg2.priority.compareTo(msg1.priority);
- }
- }
- public class Main {
- public static void main(String args[]) {
- PriorityQueue<Product> pq = new PriorityQueue<Product>(3);
- pq.add(new Product("A", ProductQuality.Low));
- pq.add(new Product("B", ProductQuality.High));
- pq.add(new Product("C", ProductQuality.Medium));
- Product m;
- while ((m = pq.poll()) != null)
- System.out.println(m.name + " Priority: " + m.priority);
- PriorityQueue<Product> pqRev = new PriorityQueue<Product>(3, new MessageComparator());
- pqRev.add(new Product("D", ProductQuality.Low));
- pqRev.add(new Product("E", ProductQuality.High));
- pqRev.add(new Product("F", ProductQuality.Medium));
- while ((m = pqRev.poll()) != null)
- System.out.println(m.name + " Priority: " + m.priority);
- }
- }
主要是要重写compareTo()这个方法,使之达到自己想要的排序方式。