Java.utilのPriorityQueueクラスを使用しているとします。 PriorityQueue pqから最大の数を削除したいと考えています。キューの先頭にあると仮定しています。PriorityQueueのトップを削除しますか?
以下は動作しますか?
// 1
int head = pq.peek();
pq.dequeue(head);
// 2
int head = pq.dequeue(pq.peek());
これは非プリミティブでも同じですか?
Java.utilのPriorityQueueクラスを使用しているとします。 PriorityQueue pqから最大の数を削除したいと考えています。キューの先頭にあると仮定しています。PriorityQueueのトップを削除しますか?
以下は動作しますか?
// 1
int head = pq.peek();
pq.dequeue(head);
// 2
int head = pq.dequeue(pq.peek());
これは非プリミティブでも同じですか?
Queue#peek
とQueue#element
キューの先頭の値を返し、Queue#poll
とQueue#remove
リターンとにそれを削除します。
int head = pq.poll();
はあなたが望むものであるように見えます。
そして:は、プリミティブ以外の値に対してのみ機能します。キューにはオブジェクトのみが格納されるからです。そのトリックは、あなたのキューストアInteger
の値とJava 1.5+は、結果をint
プリミティブ(アウトボックス)に自動的に変換できます。だからはのキューに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]
ケアをリターンし、削除しますか? – falstro
'dequeue'メソッドはどこにありますか? [私のAPIは表示されません](http://download.oracle.com/javase/6/docs/api/java/util/PriorityQueue.html)..? –