通常,佇列遵循先進先出(FIFO)的原則,但是PriorityQueue 在按照優先順序的方式存取元素時,遵循基於優先順序的方法。隊列的每個元素 具有與之關聯的優先權。元素根據自然排序進行優先排序 order. However, we can provide custom orders using a comparator. The elements of PriorityQueue are not actually sorted, they are only retrieved in sorted order. This feature allows us to modify an element of PriorityQueue easily.
在開始程式之前,讓我們先了解PriorityQueue的幾個內建方法 -
add() − It is used to add a single element to the queue
offer() − 它也將給定的元素插入到佇列中。
peek() − 用於檢索佇列的第一個元素。
remove() − It is used to remove the specified element from the queue.
定義一個PriorityQueue集合的對象,並使用'add()'方法儲存一些元素
Now, using ‘peek()’ method show the first element of queue and then remove this 使用 'remove()' 方法從佇列中移除元素
進一步移動,使用內建方法在相同位置插入一個新元素
Again show the modified first element.
In the following example, we will modify an element of PriorityQueue. The elements are
沒有比較器的優先級,這意味著它們將按升序存取。
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]
使用一個名為的內建方法定義一個PriorityQueue集合的對象 ‘Collections.reverseOrder()’用於將元素按降序儲存。
現在,請按照前面範例中所述的相同步驟進行。
#In the following example, we will modify an element of PriorityQueue. The elements are 使用比較器進行優先排序,以便按降序提供存取。
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 Collection Framework的PriorityQueue類別來開始本文 實作Queue介面的內容。在下一節中,我們將討論一些內建的內容 在給定的PriorityQueue中修改元素的Java程式中所使用的方法
以上是我如何在Java中修改PriorityQueue的元素?的詳細內容。更多資訊請關注PHP中文網其他相關文章!