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,

1 則留言:

[Git 常見問題] error: The following untracked working tree files would be overwritten by merge

  Source From  Here 方案1: // x -----删除忽略文件已经对 git 来说不识别的文件 // d -----删除未被添加到 git 的路径中的文件 // f -----强制运行 #   git clean -d -fx 方案2: 今天在服务器上  gi...