(内容来自jdk api 1.6.0文档,主要是附代码做参考)
import java.util.Comparator;
import java.util.PriorityQueue;
import java.util.Queue;
public class PriQue {
private String name;
private int population;
public PriQue(String name, int population) {
this.name = name;
this.population = population;
}
public String getName() {
return this.name;
}
public int getPop() {
return this.population;
}
public String toString() {
return getName() + "-" + getPop();
}
public void compare() {
}
public static void main(String[] args) {
// TODO 自动生成的方法存根
Comparator<PriQue> comp = new Comparator<PriQue>() {// 实现内部比较器
// 前<后 return 1则从大到小排列
@Override
public int compare(PriQue o1, PriQue o2) {
// TODO 自动生成的方法存根
int num0 = o1.getPop();
int num1 = o2.getPop();
if (num1 > num0) {
return -1;
} else if (num1 < num0) {
return 1;
} else {
return 0;
}
}
};
Queue<PriQue> p = new PriorityQueue<PriQue>(11, comp);
PriQue t1 = new PriQue("t1", 1);
PriQue t2 = new PriQue("t2", 4);
PriQue t3 = new PriQue("t3", 2);
PriQue t4 = new PriQue("t4", 0);
PriQue t5 = new PriQue("t5", 6);
PriQue t6 = new PriQue("t6", 1);
p.add(t1);
p.add(t2);
p.add(t3);
p.add(t4);
p.add(t5);
p.add(t6);
PriQue temp = new PriQue("t7", 4);
int high = p.size();// 获取队列长度
System.out.println(p);
}
}
//test output:
[t4-0, t1-1, t6-1, t2-4, t5-6, t3-2]
一个基于优先级堆的无界优先级 队列。优先级队列的元素按照其 自然顺序进行排序,或者根据构造队列时提供的
Comparator
进行排序,具体取决于所使用的构造方法。优先级队列不允许使用
null
元素。依靠自然顺序的优先级队列不允许插入不可比较的对象(这样做可能导致
ClassCastException
)。
此队列的头 是按指定排序方式确定的最小 元素。如果多个元素都是最小值,则头是其中一个元素——选择方法是任意的。队列获取操作 poll
、remove
、peek
和 element
访问处于队列头的元素。
优先级队列是无界的,但是有一个内部容量,控制着用于存储队列元素的数组大小。它通常至少等于队列的大小。随着不断向优先级队列添加元素,其容量会自动增加。无需指定容量增加策略的细节。
此类及其迭代器实现了 Collection
和 Iterator
接口的所有可选 方法。方法 iterator()
中提供的迭代器不 保证以任何特定的顺序遍历优先级队列中的元素。如果需要按顺序遍历,请考虑使用 Arrays.sort(pq.toArray())
。
boolean | 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) 返回一个包含此队列所有元素的数组;返回数组的运行时类型是指定数组的类型。 |