Java 中的 PriorityQueue 在你使用 poll() 取出 element 時會自動依照自然法則來排序,簡單範例如下 :
- package test;
- import java.util.Comparator;
- import java.util.PriorityQueue;
- public class PriorityQueueEx {
- public static void test01() {
- PriorityQueue
pq = new PriorityQueue (); - pq.offer("c");
- pq.offer("a");
- pq.offer("b");
- String s;
- while ((s = pq.poll()) != null) {
- System.out.print(s + ", ");
- }
- }
- public static void test02() {
- Comparator
c = new Comparator () { - public int compare(String a, String b) {
- return a.compareTo(b) * -1; // Using descending order
- }
- };
- PriorityQueue
pq = new PriorityQueue ( 3, c); - pq.offer("c");
- pq.offer("a");
- pq.offer("b");
- String s;
- while ((s = pq.poll()) != null) { // default is ascending order.
- System.out.print(s + ", ");
- }
- }
- public static void main(String[] args) {
- test01();
- }
- }
如果要自訂義排序的方法, 如改用降序. 需要自己撰寫類別實作介面 Comparator 的方法 compare(). 這部分的 code 可以參考上述範例代碼方法 test02(). 在 main 執行 test02() 結果為 :
牛逼
回覆刪除