Queue インターフェイスしか表示されません。Java コレクションに Queue クラスはありませんか?
9 に答える
Javadocは、 を実装するクラスのリストを提供しますQueue
。
すべての既知の実装クラス:
AbstractQueue、ArrayBlockingQueue、ArrayDeque、ConcurrentLinkedQueue、DelayQueue、LinkedBlockingQueue、LinkedBlockingDeque、LinkedList、PriorityBlockingQueue、PriorityQueue、SynchronousQueue
便利なサブインターフェースもいくつかあります。
すべての既知のサブインターフェイス:
BlockingDeque <E>、BlockingQueue <E>、Deque <E>
キューには複数の実装があります: API から:
すべての既知の実装クラス:
AbstractQueue, ArrayBlockingQueue, ArrayDeque, ConcurrentLinkedQueue,
DelayQueue, LinkedBlockingDeque, LinkedBlockingQueue, LinkedList,
PriorityBlockingQueue, PriorityQueue, SynchronousQueue
AbstractQueue は具象クラスではないことに注意してください。
これらのいくつかはパッケージの並行性からのものであるため、ジョブキューなどを実装している場合は、ex.
いいえ、Queue
クラスはありません。キューを実装するにはさまざまな方法があり、ユース ケースに適した方法を選択する必要があるためです。コレクション フレームワーク内の他のコレクションについても同じことが言えます。たとえば、ArrayList
どちらLinkedList
もList
. オブジェクト継承をうまく利用する一般的なパターンは次のとおりです。
たとえば、InterfaceQueue
は、オブジェクトが果たす役割を定義します。
サブインターフェース、例えばDeque
、ロールをさらに拡張または特殊化します。この場合、「deque」または両端キューを使用すると、キューの両端に要素を追加して削除するだけでなく、キューの両端から要素を追加および削除できます。正面から;
クラスは、オブジェクトがどのように役割を実行するかの実装を提供します。たとえばArrayDeque
、サイズ変更可能な配列を使用して両端キューを実装しますLinkedList
。これには、リンク リストを使用するのとは異なる長所と短所があります。
役割としてのインターフェースの考え方を詳しく説明すると、 がArrayDeque
実装されていても、それを心配することなくDeque
として使用できることに注意してQueue
ください。両方のインターフェースを実装すると、両方の役割を果たすことができるからです。同様に、または帽子LinkedList
をかぶることができます。List
Queue
Deque
このため、コレクション フレームワークのようなものを使用する通常の (推奨される) 方法は、インターフェイスにプログラミングすることです。つまり、クラス名自体ではなく、クラスを使用するときにインターフェイスを使用します。たとえば、次のようにオブジェクトをインスタンス化します。
Queue<String> logQueue = new ConcurrentLinkedQueue<String>();
...
logQueue.add("Log message");
このようにあなたは
- 特定のクラスに結び付けられておらず、必要に応じて多くのコードを変更することなくドロップイン置換を使用できます。
- クラスが果たす役割に名前を付けて、クラスで何をしているかを文書化しています。これが役立つ一般的な原則は、自己文書化コードです。これは、本質的に、コメントなどを使用せずにコード自体を自明にすることです。
http://java.sun.com/javase/6/docs/api/java/util/Queue.html -- 「すべての既知の実装クラス」セクションを参照してください。さまざまな目的に適したさまざまな実装があります。
import java.util.Queue;
それだけ
Enqueue function == Queue_Object.add(input_value);
Dequeue function == Queue_Object.pull(); //return the value and delete it from queue