网站解析错误,创建目录 wordpress,网站关闭申请书,网站上怎么做动画广告视频PriorityQueue优先队列
PriorityQueue 是 Java 中的一个基于优先级的队列#xff0c;它可以实现最小堆或最大堆的功能。在 PriorityQueue 中#xff0c;每个元素都有一个优先级#xff0c;根据优先级可以决定出队顺序。
PriorityQueue 的实现基于堆#xff0c;堆是一种完…PriorityQueue优先队列
PriorityQueue 是 Java 中的一个基于优先级的队列它可以实现最小堆或最大堆的功能。在 PriorityQueue 中每个元素都有一个优先级根据优先级可以决定出队顺序。
PriorityQueue 的实现基于堆堆是一种完全二叉树可以用数组来表示。对于最小堆堆中每个节点的值都不大于其子节点的值对于最大堆堆中每个节点的值都不小于其子节点的值。
以下是 PriorityQueue 的主要方法
add(E e)向队列中添加元素 e。offer(E e)向队列中添加元素 e与 add 方法相同。remove()从队列中删除并返回头部元素若队列为空则抛出异常。poll()从队列中删除并返回头部元素若队列为空则返回 null。element()获取但不删除头部元素若队列为空则抛出异常。peek()获取但不删除头部元素若队列为空则返回 null。size()获取队列中元素数量。isEmpty()判断队列是否为空。
除此之外PriorityQueue 还可以使用比较器来自定义元素间的优先级关系例如
PriorityQueueInteger minHeap new PriorityQueueInteger((a, b) - a - b);以上代码表示创建一个最小堆其元素的优先级按照数值大小排序。
在实际应用中PriorityQueue 常用于实现一些贪心算法、Dijkstra 算法等需要维护当前状态下最优解的场景。
代码示例
import java.util.PriorityQueue;public class Main {public static void main(String[] args) {// 创建一个最小堆 PriorityQueuePriorityQueueInteger minHeap new PriorityQueue();// 向队列中添加元素minHeap.add(3);minHeap.offer(1);minHeap.add(4);minHeap.offer(2);// 从队列中删除并返回头部元素int head1 minHeap.remove();System.out.println(Removed element: head1);// 从队列中删除并返回头部元素int head2 minHeap.poll();System.out.println(Polled element: head2);// 获取但不删除头部元素int head3 minHeap.element();System.out.println(Element at head: head3);// 获取但不删除头部元素int head4 minHeap.peek();System.out.println(Peeked element: head4);// 获取队列中元素数量int size minHeap.size();System.out.println(Size of the queue: size);// 判断队列是否为空boolean isEmpty minHeap.isEmpty();System.out.println(Is the queue empty? isEmpty);}
}