这里使用了一个静态构造器,表示反着排序
PriorityQueue<Integer> minheap = new PriorityQueue<Integer>(Comparator.reverseOrder());
注意一个优先队列只能提供一方的最大/最小方法
如果有问题,那就使用两个哈哈
主要方法
- 添加 offer,add
- 栈顶 peek,poll
- 移除 remove(obj)
研究一下remove
主要是这个indexOf方法
public boolean remove(Object o) {
int i = indexOf(o);
if (i == -1)
return false;
else {
removeAt(i);
return true;
}
}
private int indexOf(Object o) {
if (o != null) {
for (int i = 0; i < size; i++)
if (o.equals(queue[i]))
return i;
}
return -1;
}
//在equals这里,直接使用的是==
?现在不懂的就是Object和泛型对象的比较