首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

PriorityQueue的方法

2012-02-11 
PriorityQueue的方法求助import java.util.*class TestPQ{public static void main(String[] args) {Prio

PriorityQueue的方法求助
import java.util.*;
class TestPQ{
public static void main(String[] args) {
PriorityQueue<String> pq = new PriorityQueue<String>();
pq.add("2");
pq.add("4");
System.out.print(pq.peek() + " ");
pq.offer("1");
pq.add("3");
pq.remove("1");
System.out.print(pq.poll() + " ");
if(pq.remove("2")) System.out.print(pq.poll() + " ");
System.out.print(pq.poll() + " " + pq.peek());
}
}

这是一道SCJP的练习题,7 - 9
给的答案是 2 2 3 4
自己run的结果也是 2 2 3 4
但是不知道为何不是 2 2 4 3
请高手赐教。非常感谢。

[解决办法]

探讨

是因为按自然顺序,3排在4之前,所以3的优先级比4高,所以先处理3吗?

[解决办法]
PriorityQueue(int initialCapacity, Comparator<? super E> comparator) 使用指定的初始容量创建一个 PriorityQueue,并根据指定的比较器来排序其元素。

直接用不带参数的构造方法,那么就是默认的顺序了。

同学你可以看看API的嘛,另外数据结构的优先队列,实现也不是很难。
[解决办法]
这个队列称为优先队列,往里面放的对象谁的优先级别高谁可以插队被先取出来。

优先级根据对象的 Comparable 的比值,或者 Comparator 的比值来确定

热点排行