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中文網其他相關文章!