如何在Java中修改PriorityQueue的元素?
通常,佇列遵循先進先出 (FIFO) 的方法,但PriorityQueue在訪問元素時遵循基於優先順序的策略。佇列的每個元素都有一個與其關聯的優先順序。元素根據自然排序順序進行優先順序排序。但是,我們可以使用比較器提供自定義排序。PriorityQueue的元素實際上並沒有排序,它們只是按排序順序檢索。此功能使我們可以輕鬆修改PriorityQueue的元素。
修改PriorityQueue元素的Java程式
在深入研究程式之前,讓我們先熟悉PriorityQueue的一些內建方法:
add() − 用於向佇列新增單個元素
offer() − 它也用於將給定元素插入佇列。
peek() − 用於檢索佇列的第一個元素。
remove() − 用於從佇列中移除指定的元素。
方法一
定義PriorityQueue集合的物件,並使用‘add()’方法儲存一些元素。
現在,使用‘peek()’方法顯示佇列的第一個元素,然後使用‘remove()’方法從佇列中移除此元素。
接下來,使用內建方法‘offer()’在相同位置插入一個新元素。
再次顯示修改後的第一個元素。
示例
在下面的示例中,我們將修改PriorityQueue的元素。元素在沒有比較器的情況下按優先順序排序,這意味著它們將按升序訪問。
import java.util.*;
public class Modify {
public static void main(String[] args) {
PriorityQueue<Integer> queuePq = new PriorityQueue<>();
// inserting elements
queuePq.add(7);
queuePq.add(9);
queuePq.add(2);
queuePq.add(4);
queuePq.add(3);
System.out.println("Original Queue: " + queuePq);
int head1 = queuePq.peek(); // accessing first element
System.out.println("The first element in Queue: " + head1);
queuePq.remove(2); // removing first element
queuePq.offer(1); // adding new element at first position
int head2 = queuePq.peek(); // accessing first element
System.out.println("The updated first element in Queue: " + head2);
queuePq.offer(2); // adding new element at first position
System.out.println("Newly updated Queue: " + queuePq);
}
}
輸出
Original Queue: [2, 3, 7, 9, 4] The first element in Queue: 2 The updated first element in Queue: 1 Newly updated Queue: [1, 3, 2, 9, 4, 7]
方法二
使用名為‘Collections.reverseOrder()’的內建方法定義PriorityQueue集合的物件,以便按降序儲存元素。
現在,按照上一個示例中描述的步驟操作。
示例
在下面的示例中,我們將修改PriorityQueue的元素。元素使用比較器按優先順序排序,以便按降序訪問。
import java.util.*;
public class Modify {
public static void main(String[] args) {
PriorityQueue<Integer> queuePq = new
PriorityQueue<>(Collections.reverseOrder());
// inserting elements
queuePq.add(7);
queuePq.add(9);
queuePq.add(2);
queuePq.add(1);
queuePq.add(3);
System.out.println("Original Queue: " + queuePq);
int head1 = queuePq.peek(); // accessing first element
System.out.println("The first element in Queue: " + head1);
queuePq.remove(9); // removing first element
queuePq.offer(8); // adding new element at first position
int head2 = queuePq.peek(); // accessing first element
System.out.println("The updated first element in Queue: " + head2);
queuePq.offer(9); // adding new element at first position
System.out.println("Newly updated Queue: " + queuePq);
}
}
輸出
Original Queue: [9, 7, 2, 1, 3] The first element in Queue: 9 The updated first element in Queue: 8 Newly updated Queue: [9, 7, 8, 1, 3, 2]
結論
我們從定義Java集合框架的PriorityQueue類(它實現了Queue介面)開始本文。在下一節中,我們討論了一些在Java程式中用於修改給定PriorityQueue元素的內建方法。
廣告
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP