2012-04-18 20 views
51

intの束を格納するための単純なFIFO実装のキューが必要です(ジェネリックの実装であれば大したことはありません)。FIFOベースのキュー実装ですか?

java.utilまたはTrove/Guavaライブラリで既に焼いているものはありますか?

答えて

59

はい。 Queue

LinkedListは、最も些細な具体的な実装である。

+5

Javadocにはすべての実装がリストされています。また、 'LinkedList'の上にある2番目のリンクは' LinkedList'の –

+2

です。それは明示的なクラスです。代わりに、 'ArrayDeque'は頻繁に高速です。 –

+0

いつでもキューのサイズを変更する必要はなく、elemntsの数は常に一定です。 –

2

はいこれらはJavaに組み込まれています。ちょうど1つの例here。 Javaのキューについてgoogle検索をして、それはthatsです。

10

ArrayDequeはおそらくJDKの中で最も速いオブジェクトベースのキューです。 TroveにはTIntQueueインターフェイスがありますが、その実装がどこにあるのかわかりません。ここで

+0

yeah TIntQueueはどこにも実装されていません。 –

+5

'ArrayDeque'がスタック(LIFO)ではなくキュー(FIFO)として機能するためには、' add'と 'remove'を使うべきです。 'push'と' pop'を使うと、スタックとして動作します。 (厳密に言えば、 'remove'と' pop'は同じですが、 'add/pop'や' push/remove'はペアとしてよく発音しないので、 'add/remove'と' push/pop' 。) – ADTC

42

JavaのビルトインFIFOキューの使用のためのサンプルコードです:

public static void main(String[] args) { 
     Queue<Integer> myQ=new LinkedList<Integer>(); 
     myQ.add(1); 
     myQ.add(6); 
     myQ.add(3); 
     System.out.println(myQ); //1 6 3 
     int first=myQ.poll();// retrieve and remove the first element 
     System.out.println(first);//1 
     System.out.println(myQ);//6 3 
     } 
4

Queue JavaでCollectionを拡張するインタフェースです。それはFIFOアーキテクチャをサポートするために必要なすべての機能を備えています。

具体的な実装では、LinkedListを使用できます。 LinkedListはを実装するDequeを実装します。これらはすべてjava.utilパッケージの一部です。

例のメソッドの詳細については、FIFO based Queue implementation in Javaを参照してください。

関連する問題