2013-06-03 25 views
7

キュー内に配置された順に反復処理したいオブジェクトを含むキューを作成しました(キューに配置された最初のオブジェクト、キューに入れられた2番目のオブジェクト、3番目のオブジェクト)。 ..)オーダーのオブジェクトキューを反復処理する

私はこれをオンラインで行う方法を見ましたが、キューのオブジェクトが正しい順序で訪問されることが保証されるかどうかはわかりませんか?

for(MyObject anObject : queue){ 
    //do someting to anObject... 

ありがとうございました。

+0

キューに 'List'を実装させます。 –

+0

'キュー'のタイプは何ですか? – Djon

答えて

4

どのQueue実装を使用するかによって異なります。一般に、必ずしもそうであるとは限らない。

javadoc for Queue状態:典型的

キューが、FIFO(先入れ先出し)方式に必ずしも、順序素子を行います。例外としては、供給されたコンパレータ、または要素の自然順序付け、要素LIFO(ラスト・イン・ファースト・アウト)を順序付けるLIFOキュー(またはスタック)に従って要素を順序付けする優先度キューがあります。

また追加:

すべてのキューの実装は、その順序付けのプロパティを指定する必要があります。

したがって、使用している特定のキューのjavadocを確認するだけで、答えを見つけてください。

+0

私はキューを以下のように定義しました: 'Queue queue = new LinkedList '。上記のコードを使用すると、これは意図した通りに動作しますか?それは 'Prority Queue'ではないので。 Thanks –

+0

LinkedListはDequeも実装しています。これはFIFOです。したがって、反復順序は挿入順序に対応します(挿入する場合は1、次に反復する場合は1、次に反復する場合は2)。 – assylias

+0

それは素晴らしいです。助けてくれてありがとう。 –

0

この場合、ArrayListを使用する方が良いと思います。それを試してください。キューのみを使用する理由

+0

学校では、プロジェクトで[キュー]を使用する必要があることがあります。知っている。恐ろしい。 – Kelmikra

+1

FIFO(先入れ先出し)データ構造が必要な場合は、ArrayListよりもキューが適切です。 ArrayListが適切なデータ構造でない理由は、別の開発者(またはあなたがFIFOが必要であることを忘れた場合でも)が、ArrayListの途中から項目を削除してFIFOデータ構造を損なうそれはもともと必要だった。あなたは明らかにFIFOデータ構造としてArrayListを使うことができますが、それは開発者によって強制され、選択されたデータ型ではありません。 –

6

キューをLinkedListとして実装します。次に、挿入されたオブジェクトを繰り返し処理できます。エラーが発生しないように、キューに挿入されているオブジェクトの型を宣言する必要があります。オブジェクトとして保持し、オブジェクトのキューとして指定すると、上のコードが機能します。下記参照。

Queue<Object> queue = new LinkedList<Object>(); 
// add your objects here 
// EX: queue.add(new MyObject) 

for(Object item : queue){ 
    System.out.println(item.toString()); 
}