ArrayBlockingQueueとArrayDequeの違い
ArrayBlockingQueueは、FIFO順に要素を格納します。要素の挿入は常にキューの末尾で行われ、要素の削除は常にキューの先頭から行われました。スレッドセーフであり、制限付き配列キューであるため、一度作成すると容量を変更できません。これは、ブロッキングキューの実装です。
Javaドキュメントによる-
Dequeインターフェースのサイズ変更可能な配列の実装。配列両端キューには容量制限はありません。それらは使用法をサポートするために必要に応じて成長します。それらはスレッドセーフではありません。外部同期がない場合、複数のスレッドによる同時アクセスはサポートされません。ヌル要素は禁止されています。このクラスは、スタックとして使用する場合はStackよりも高速であり、キューとして使用する場合はLinkedListよりも高速である可能性があります。
Sr。いいえ。 | キー | ArrayBlockingQueue | ArrayDeque |
---|---|---|---|
1 | 基本 | BlockingQueueインターフェースを実装します | Dequeインターフェースを実装します |
2 | 境界 | 制限付き配列キューです。したがって、一度作成すると、容量を変更することはできません | これはサイズ変更可能です-Dequeの配列実装 |
3 | スレッドセーフ | スレッドセーフです | スレッドセーフではありません |
4 | 挿入/削除 | 要素の挿入は常にキューの末尾で発生し、要素の削除は常にキューの先頭から発生しました | 両端での要素の挿入と削除をサポートします |
-
Javaでのイテレータと列挙の違い
IteratorとEnumerationはどちらも、コレクションの要素をトラバースしてアクセスするためのカーソルです。どちらもコレクションフレームワークに属しています。列挙は、コレクションフレームワークのJDK1.2バージョンのJDK1.0およびIteratorで追加されました。 コレクション内の要素への読み取り専用アクセス権があるため、列挙型はコレクション内の構造を変更できません。次の方法があります: * hasMoreElements() * nextElement() 一方、イテレータはコレクション内の要素を読み取って削除できます。以下の方法があります- * hasNe
-
JavaのQueueインターフェイスのpeek()、poll()、remove()メソッドの違いは?
これは、処理前にデータを保持するためにインデントされたコレクションを表します。これは、先入れ先出し(FIFO)タイプの配置です。キューに入れられた最初の要素は、キューから取り出された最初の要素です。 peek()メソッド このメソッドは、オブジェクトを削除せずに、現在のキューの先頭にあるオブジェクトを返します。キューが空の場合、このメソッドはnullを返します。 例 import java.util.Iterator; import java.util.LinkedList; import java.util.Queue; public class QueueExample {