程式扎記: [ Java 代碼範本 ] PriorityQueue 優先權佇列

標籤

2012年8月9日 星期四

[ Java 代碼範本 ] PriorityQueue 優先權佇列

來源自 這裡 
Java 中的 PriorityQueue 在你使用 poll() 取出 element 時會自動依照自然法則來排序,簡單範例如下 : 
  1. package test;  
  2.   
  3. import java.util.Comparator;  
  4. import java.util.PriorityQueue;  
  5.   
  6. public class PriorityQueueEx {  
  7.     public static void test01() {  
  8.         PriorityQueue pq = new PriorityQueue();  
  9.         pq.offer("c");  
  10.         pq.offer("a");  
  11.         pq.offer("b");  
  12.         String s;  
  13.         while ((s = pq.poll()) != null) {  
  14.             System.out.print(s + ", ");  
  15.         }  
  16.     }  
  17.   
  18.     public static void test02() {  
  19.         Comparator c = new Comparator() {  
  20.             public int compare(String a, String b) {  
  21.                 return a.compareTo(b) * -1// Using descending order  
  22.             }  
  23.         };  
  24.         PriorityQueue pq = new PriorityQueue(3, c);  
  25.         pq.offer("c");  
  26.         pq.offer("a");  
  27.         pq.offer("b");  
  28.         String s;  
  29.         while ((s = pq.poll()) != null) { // default is ascending order.  
  30.             System.out.print(s + ", ");  
  31.         }  
  32.     }  
  33.   
  34.     public static void main(String[] args) {  
  35.         test01();  
  36.     }  
  37. }  
預設是使用升序排列, 所以如果你呼叫方法 test01(), 列印出來的會是 : 
a, b, c,

如果要自訂義排序的方法, 如改用降序. 需要自己撰寫類別實作介面 Comparator 的方法 compare(). 這部分的 code 可以參考上述範例代碼方法 test02(). 在 main 執行 test02() 結果為 : 
c, b, a,

沒有留言:

張貼留言

網誌存檔

關於我自己

我的相片
Where there is a will, there is a way!