java 优先级队列中的成员函数返回但不删除指定值?

Member function in java priority queue returning but not removing the specified value?

我想知道在Java优先级队列中,是否有一个成员函数returns指定的值(最小值或最大值取决于优先级队列的结构)而不删除它?

remove() 删除此元素。

下面的例子说明了我的问题。

public static void main(String[] args){
    PriorityQueue<Integer> que = new PriorityQueue<Integer>();
    que.offer(3);
    que.offer(1);
    que.offer(2);
    System.out.println(que.remove());
    System.out.println(que.remove());
    System.out.println(que.remove());
    //Instead of removing them directly, I would 
    //like to see whether the min numbers are greater than, say 2. 
    //If so, remove them in increment order.
}

使用 peek 方法,您可以在不删除队列头部的情况下检查元素的值。

http://docs.oracle.com/javase/7/docs/api/java/util/PriorityQueue.html#peek()

偷看()

Retrieves, but does not remove, the head of this queue, or returns null if this queue is empty.

更详细的解释请参考这里:Whosebug