要自定義排序PriorityQueue,您需要實現Comparator接口,并覆蓋其中的compare()方法。Comparator接口允許您定義元素之間的比較邏輯。然后,您可以將自定義的Comparator對象作為參數傳遞給PriorityQueue的構造函數。
下面是一個示例,展示如何使用PriorityQueue自定義排序:
import java.util.Comparator;
import java.util.PriorityQueue;
public class PriorityQueueCustomSorting {
public static void main(String[] args) {
// 創建自定義的Comparator對象
Comparator<Integer> customComparator = new Comparator<Integer>() {
@Override
public int compare(Integer num1, Integer num2) {
// 根據數字的絕對值進行比較
return Integer.compare(Math.abs(num1), Math.abs(num2));
}
};
// 創建PriorityQueue并傳入自定義的Comparator對象
PriorityQueue<Integer> priorityQueue = new PriorityQueue<>(customComparator);
// 添加元素到PriorityQueue
priorityQueue.add(-10);
priorityQueue.add(5);
priorityQueue.add(-3);
priorityQueue.add(8);
// 輸出PriorityQueue中的元素
while (!priorityQueue.isEmpty()) {
System.out.println(priorityQueue.poll());
}
}
}
在上面的示例中,我們創建了一個自定義的Comparator對象,它根據數字的絕對值進行比較。然后,我們創建了一個PriorityQueue,并將自定義的Comparator對象傳遞給它的構造函數。最后,我們向PriorityQueue中添加一些元素,并使用poll()方法按照自定義排序的順序依次獲取并輸出這些元素。
執行上述代碼,將輸出以下結果:
-3
5
-10
8
可以看到,PriorityQueue中的元素按照自定義的排序順序進行了排列。