PriorityQueue默认是一个小顶堆,然而可以通过传入自定义的Comparator函数来实现大顶堆。
| add(E e) 将指定的元素插入此优先级队列。 | |
void | clear() 从此优先级队列中移除所有元素。 | |
Comparator< super E> | comparator() 返回用来对此队列中的元素进行排序的比较器;如果此队列根据其元素的自然顺序进行排序,则返回 null 。 | |
boolean | contains(Object o) 如果此队列包含指定的元素,则返回 true 。 | |
Iterator<E> | iterator() 返回在此队列中的元素上进行迭代的迭代器。 | |
boolean | offer(E e) 将指定的元素插入此优先级队列。 | |
E | peek() 获取但不移除此队列的头;如果此队列为空,则返回 null。 | |
E | poll() 获取并移除此队列的头,如果此队列为空,则返回 null。 | |
boolean | remove(Object o) 从此队列中移除指定元素的单个实例(如果存在)。 | |
int | size() 返回此 collection 中的元素数。 | |
Object[] | toArray() 返回一个包含此队列所有元素的数组。 | |
| toArray(T[] a) 返回一个包含此队列所有元素的数组;返回数组的运行时类型是指定数组的类型。 |
class Staff {
int s, e;
public Staff(int s, int e) {
this.s = s;
this.e = e;
}
}
/*例如我们创建一个大根堆,新建一个比较器的对象,然后重构compare方法。
根据staff的s值进行排序*/
PriorityQueue<Staff> queue = new PriorityQueue<Staff>(new Comparator<Staff>() {
public int compare(Staff staff1, Staff staff2) {
return staff2.s - staff1.s;
}
});