Java中的優先級隊列(PriorityQueue)是一種特殊的隊列,它的元素按照自然順序(對于可比較的元素)或者根據提供的比較器進行排序。優先級隊列不允許插入null元素,并且不保證同優先級元素的順序。
以下是如何在Java中使用優先級隊列的基本步驟:
import java.util.PriorityQueue;
PriorityQueue<Integer> priorityQueue = new PriorityQueue<>();
你也可以創建一個帶有初始容量的優先級隊列:
PriorityQueue<Integer> priorityQueue = new PriorityQueue<>(10);
priorityQueue.add(5);
priorityQueue.add(1);
priorityQueue.add(10);
int minValue = priorityQueue.poll(); // 取出并返回最小值,如果隊列為空則返回null
或者
int minValue = priorityQueue.peek(); // 只返回最小值,但不刪除它,如果隊列為空則返回null
boolean isEmpty = priorityQueue.isEmpty();
int size = priorityQueue.size();
priorityQueue.clear();
注意:如果你想要自定義元素的排序方式,你需要提供一個比較器(Comparator)。例如,如果你想要一個最大堆(最大值優先),你可以這樣做:
PriorityQueue<Integer> maxHeap = new PriorityQueue<>((a, b) -> b - a);
這將創建一個最大堆,其中最大值優先。