Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/348.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 正在删除优先级队列的顶部?_Java_Queue_Priority Queue - Fatal编程技术网

Java 正在删除优先级队列的顶部?

Java 正在删除优先级队列的顶部?,java,queue,priority-queue,Java,Queue,Priority Queue,假设我正在使用Java.util中的PriorityQueue类。我想从PriorityQueue pq中删除最大的数字,我们假设它位于队列的最前面 下面的方法行吗 // 1 int head = pq.peek(); pq.dequeue(head); // 2 int head = pq.dequeue(pq.peek()); 这对非原语也同样有效吗?队列#peek和队列#元素返回队列的头值,队列#轮询和队列#删除返回并删除它 看起来像 int head = pq.poll(); 这

假设我正在使用Java.util中的PriorityQueue类。我想从PriorityQueue pq中删除最大的数字,我们假设它位于队列的最前面

下面的方法行吗

// 1 
int head = pq.peek();
pq.dequeue(head);

// 2
int head = pq.dequeue(pq.peek());
这对非原语也同样有效吗?

队列#peek
队列#元素
返回队列的头值,
队列#轮询
队列#删除
返回并删除它

看起来像

int head = pq.poll();
这就是你想要的

而且:它只对非基本值有效,因为队列只存储对象。诀窍在于(我猜)您的队列存储
Integer
值,Java 1.5+可以自动将结果转换为
int
原语(outboxing)。因此它感觉像是队列存储了
int
值。

peek()
-返回,但不删除头值

poll()
-返回并删除头值

        PriorityQueue<Integer> pq = new PriorityQueue<Integer>();

        pq.add(2);pq.add(3);

        System.out.println(pq); // [2, 3]
        System.out.println(pq.peek()); // head 2
        System.out.println(pq); // 2 still exists. [2, 3]
        System.out.println(pq.poll()); // 2. remove head (2)
        System.out.println(pq); // [3]
PriorityQueue pq=new PriorityQueue();
pq.增加(2);pq.增加(3);
系统输出打印LN(pq);//[2, 3]
System.out.println(pq.peek());//总目2
系统输出打印LN(pq);//2仍然存在。[2, 3]
System.out.println(pq.poll());//2.拆下泵头(2)
系统输出打印LN(pq);//[3]

请告诉我们为什么您不想使用
poll()
?您在哪里找到了
出列方法。。?谢谢你的否决,但是。。为什么?