在Java中,PriorityQueue類是一個基于優先級的隊列。默認情況下,隊列中的元素按照自然順序進行排序,但你可以通過提供一個自定義的比較器(Comparator)來實現不同的優先級排序。
以下是一個使用PriorityQueue實現優先級排序的示例:
import java.util.Comparator;
import java.util.PriorityQueue;
class Task {
String name;
int priority;
public Task(String name, int priority) {
this.name = name;
this.priority = priority;
}
@Override
public String toString() {
return "Task{" +
"name='" + name + '\'' +
", priority=" + priority +
'}';
}
}
public class PriorityQueueExample {
public static void main(String[] args) {
// 創建一個優先級隊列,根據任務的優先級進行排序
PriorityQueue<Task> taskQueue = new PriorityQueue<>(Comparator.comparingInt(Task::getPriority).reversed());
// 向隊列中添加任務
taskQueue.add(new Task("Task 1", 3));
taskQueue.add(new Task("Task 2", 1));
taskQueue.add(new Task("Task 3", 2));
// 輸出隊列中的任務
while (!taskQueue.isEmpty()) {
System.out.println(taskQueue.poll());
}
}
}
在這個示例中,我們定義了一個名為Task的類,它包含一個名稱(name)和一個優先級(priority)。我們創建了一個名為taskQueue的PriorityQueue,并使用Comparator.comparingInt()方法根據任務的優先級進行排序。通過調用reversed()方法,我們可以讓隊列按照優先級的降序進行排序。
然后,我們向隊列中添加了三個任務,并在隊列不為空時,使用poll()方法依次取出并輸出隊列中的任務。