溫馨提示×

priorityqueue java怎樣實現優先級排序

小樊
127
2024-11-16 02:48:21
欄目: 編程語言

在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()方法依次取出并輸出隊列中的任務。

0
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女