Java
 Computer >> コンピューター >  >> プログラミング >> Java

ArrayBlockingQueueとArrayDequeの違い


ArrayBlockingQueueは、FIFO順に要素を格納します。要素の挿入は常にキューの末尾で行われ、要素の削除は常にキューの先頭から行われました。スレッドセーフであり、制限付き配列キューであるため、一度作成すると容量を変更できません。これは、ブロッキングキューの実装です。

Javaドキュメントによる-

Dequeインターフェースのサイズ変更可能な配列の実装。配列両端キューには容量制限はありません。それらは使用法をサポートするために必要に応じて成長します。それらはスレッドセーフではありません。外部同期がない場合、複数のスレッドによる同時アクセスはサポートされません。ヌル要素は禁止されています。このクラスは、スタックとして使用する場合はStackよりも高速であり、キューとして使用する場合はLinkedListよりも高速である可能性があります。

Sr。いいえ。 キー ArrayBlockingQueue ArrayDeque
1
基本
BlockingQueueインターフェースを実装します
Dequeインターフェースを実装します
2 境界
制限付き配列キューです。したがって、一度作成すると、容量を変更することはできません
これはサイズ変更可能です-Dequeの配列実装
3 スレッドセーフ
スレッドセーフです
スレッドセーフではありません
4

挿入/削除
要素の挿入は常にキューの末尾で発生し、要素の削除は常にキューの先頭から発生しました
両端での要素の挿入と削除をサポートします

  1. Javaでのイテレータと列挙の違い

    IteratorとEnumerationはどちらも、コレクションの要素をトラバースしてアクセスするためのカーソルです。どちらもコレクションフレームワークに属しています。列挙は、コレクションフレームワークのJDK1.2バージョンのJDK1.0およびIteratorで追加されました。 コレクション内の要素への読み取り専用アクセス権があるため、列挙型はコレクション内の構造を変更できません。次の方法があります: * hasMoreElements() * nextElement() 一方、イテレータはコレクション内の要素を読み取って削除できます。以下の方法があります- * hasNe

  2. JavaのQueueインターフェイスのpeek()、poll()、remove()メソッドの違いは?

    これは、処理前にデータを保持するためにインデントされたコレクションを表します。これは、先入れ先出し(FIFO)タイプの配置です。キューに入れられた最初の要素は、キューから取り出された最初の要素です。 peek()メソッド このメソッドは、オブジェクトを削除せずに、現在のキューの先頭にあるオブジェクトを返します。キューが空の場合、このメソッドはnullを返します。 例 import java.util.Iterator; import java.util.LinkedList; import java.util.Queue; public class QueueExample {