2017-10-03 13 views
0

JavaにはQueueと同じ機能を提供するクラスがありますが、オブジェクトを返すオプションがあり、コレクションの最後にそれを設定しないでください。Javaの「削除していない」キュー

+5

:ここ


はいくつかのコードですか? –

+1

いいえ。私たちが知っているように、peekはオブジェクトを返しますが、オブジェクトはまだ一番上にあります。私はオブジェクトを取得し、 "キュー"の末尾にオブジェクトを配置したい –

+1

その場合、そのようなものはJavaに付属していません。 –

答えて

2

Queueは、このような方法を直接提供するものではない。しかし、あなたは簡単にpolladd、すなわちと、この機能を削除(および取得)最初の要素をキューにし、その後キューの最後を-追加再作成することができます。


このアプローチは、ない欠点を有していない同じ機能の他の実装と比較しました。ほとんどの実装では、のように、両方の操作をO(1)で実行できます。しかし、PriorityQueueは、O(log(n))の方が遅くなりますが、は、を避けることはできません。

LinkedListまたはPriorityQueueを設計する場合でも、この操作には同じロジックを使用することになります。最初の要素を削除して最後に追加してください。あなたは `Queue`インタフェースで` peek`方法のような意味

public <E> E pollAndReInsert(final Queue<E> queue) { 
    final E element = queue.poll(); 
    queue.add(element); 
    return element; 
} 
-1

キューインターフェイス自体は、要素を返すが、要素を削除しないで、peek();element();関数を提供します。

+2

私は知っていますが、使用後にコレクションの最後にオブジェクトを配置しないでください。 –

+2

その後、要素を削除した後に再び追加します。 – denver314

関連する問題