《Java初阶数据结构》----7.<优先级队列PriorityQueue>
在Java中,PriorityQueue
是基于优先级堆的无界队列,它不是线程安全的。默认情况下,它采用自然顺序排序,也可以在初始化时通过提供一个Comparator
来指定排序规则。
以下是使用PriorityQueue
的一些基本操作的示例代码:
import java.util.PriorityQueue;
public class PriorityQueueExample {
public static void main(String[] args) {
// 创建一个空的优先级队列,元素类型为Integer
PriorityQueue<Integer> priorityQueue = new PriorityQueue<>();
// 添加元素
priorityQueue.offer(30);
priorityQueue.offer(10);
priorityQueue.offer(20);
// 查看队列顶部元素
System.out.println("Top element: " + priorityQueue.peek());
// 移除并返回队列顶部元素
System.out.println("Removed top element: " + priorityQueue.poll());
// 检查队列是否为空
System.out.println("Is queue empty? " + priorityQueue.isEmpty());
// 使用自定义Comparator创建优先级队列
PriorityQueue<String> stringsPriorityQueue = new PriorityQueue<>((s1, s2) -> s2.compareTo(s1));
stringsPriorityQueue.offer("Hello");
stringsPriorityQueue.offer("World");
// 输出自定义排序规则的结果
System.out.println("Top element (custom comparator): " + stringsPriorityQueue.peek());
}
}
在这个例子中,我们创建了一个PriorityQueue
来存储整数,并演示了如何添加元素、查看队顶元素、移除队顶元素以及如何使用自定义Comparator
来改变排序规则。这些操作是学习和使用优先级队列的基础。
评论已关闭