首頁 > Java > java教程 > 如何在Java PriorityQueue中實作自訂排序?

如何在Java PriorityQueue中實作自訂排序?

DDD
發布: 2024-12-22 21:32:25
原創
739 人瀏覽過

How Can I Achieve Custom Sorting in a Java PriorityQueue?

PriorityQueue 中的自訂排序順序

PriorityQueue 是一個Java 集合類,提供了一種預設的排序機制,可以根據元素的元素升序對元素進行排序。自然排序。但是,可以自訂此排序行為並根據特定條件進行排序。

讓PriorityQueue 根據需要進行排序

要在PriorityQueue 中實現自訂排序,請使用建構子需要比較器比較器作為參數。比較器比較元素並決定它們的順序。例如,要根據字串的長度升序對字串進行排序:

Comparator<String> comparator = (x, y) -> x.length() - y.length();
PriorityQueue<String> queue = new PriorityQueue<>(comparator);
登入後複製

Offer 與Add 方法

PriorityQueue 提供了兩種添加元素的方法: Offer( )並且加上()。雖然功能相似,但它們有細微的差別。如果成功新增元素,offer() 傳回 true;如果佇列已滿,則傳回 false。相較之下,add() 直接將元素新增至佇列中,如果佇列已滿,則拋出 IllegalStateException。

對於無界的 PriorityQueue,這兩種方法是等效的。但是,在有界優先權佇列中,offer() 可用於在嘗試將元素入隊之前檢查是否可以新增該元素。

範例:字串長度排序

考慮以下範例,您希望建立一個PriorityQueue,根據字串對字串進行排序length:

public class StringLengthComparator implements Comparator<String> {
    @Override
    public int compare(String x, String y) {
        return x.length() - y.length();
    }
}

public class PriorityTest {
    public static void main(String[] args) {
        PriorityQueue<String> queue = new PriorityQueue<>(new StringLengthComparator());
        queue.offer("medium");
        queue.offer("short");
        queue.offer("very long indeed");

        while (!queue.isEmpty()) {
            System.out.println(queue.poll());
        }
    }
}
登入後複製

輸出:

short
medium
very long indeed
登入後複製

此範例示範如何定義自訂比較器並使用PriorityQueue建構函數實作基於String 長度的排序。

以上是如何在Java PriorityQueue中實作自訂排序?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板