Java之优先队列—PriorityQueue
程序员文章站
2024-02-15 07:58:46
...
PriorityQueue
priorityQueue是Java封装的优先*队列,它基于的是优先级堆。
对于基本数据类型默认小顶堆,对于引用类型基于的是Comparator接口。
如果引用类型没有基于Comparator接口的外比较器,则会报错。
构造方法
public PriorityQueue() {
//调用的是有参构造方法
//优先队列初始化大小为11,比较器为空
this(DEFAULT_INITIAL_CAPACITY, null);
}
public PriorityQueue(Comparator<? super E> comparator) {
this(DEFAULT_INITIAL_CAPACITY, comparator);
}
public PriorityQueue(int initialCapacity) {
this(initialCapacity, null);
}
public PriorityQueue(int initialCapacity,
Comparator<? super E> comparator) {
//以上构造方法全部基于此构造方法进行实例化
if (initialCapacity < 1)
throw new IllegalArgumentException();
this.queue = new Object[initialCapacity];
this.comparator = comparator;
}
//此构造方法是将SortedSet转化为优先队列
public PriorityQueue(Collection<? extends E> c) {
if (c instanceof SortedSet<?>) {
SortedSet<? extends E> ss = (SortedSet<? extends E>) c;
this.comparator = (Comparator<? super E>) ss.comparator();
initElementsFromCollection(ss);
}
else if (c instanceof PriorityQueue<?>) {
PriorityQueue<? extends E> pq = (PriorityQueue<? extends E>) c;
this.comparator = (Comparator<? super E>) pq.comparator();
initFromPriorityQueue(pq);
}
else {
this.comparator = null;
initFromCollection(c);
}
}
//优先队列的派生类转化为优先队列
public PriorityQueue(PriorityQueue<? extends E> c) {
this.comparator = (Comparator<? super E>) c.comparator();
initFromPriorityQueue(c);
}
常用的方法
上一篇: java web项目修改favicon.ico图标的方式
下一篇: 微信小程序中的变量和作用域
推荐阅读
-
Java之优先队列—PriorityQueue
-
优先队列java-PriorityQueue
-
优先级队列(PriorityQueue)
-
Java并发52:并发集合系列-基于独占锁+二叉树最小堆实现的单向阻塞*优先级队列PriorityBlockingQueue
-
Java数据结构之链表、栈、队列、树的实现方法示例
-
java 数据结构之栈与队列
-
JAVA 堆的使用 (大顶堆,小顶堆)即优先队列 再TopK 和求中位数中用此种数据结构
-
java-优先级队列(堆),以及TopK问题
-
并发编程(九)—— Java 并发队列 BlockingQueue 实现之 LinkedBlockingQueue 源码分析
-
Python 线程优先队列 PriorityQueue - Python零基础入门教程