通常,队列遵循先进先出(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中文网其他相关文章!