如何在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