ジャワーのデータ構造キュー(Queue)の詳細解説

キューは一般的なデータ構造であり、特別な線形リストであり、先入先出(FIFO)の特性を持っています。キューは配列やリンクリストを使って実装することができます。

キューの基本操作には、エンキュー(enqueue)とデキュー(dequeue)があります。エンキュー操作は要素をキューの末尾に追加し、デキュー操作はキューの先頭の要素を削除して返します。

Javaでは、キューはQueueインターフェースを使用して実装されます。このインターフェースはCollectionインターフェースを継承しています。Queueインターフェースには、キューを操作するためのいくつかのメソッドが提供されており、要素を追加したり取り出したり、キューの先頭の要素を取得したりすることができます。

一般のキュー実装クラスには次の種類があります:

  1. LinkedListは、リンクリストを使ってキューを実装したものです。LinkedListクラスはQueueインタフェースを実装しており、要素の追加、削除、キューの先頭要素の取得などの操作が可能です。リンクリストの特性から、LinkedListは要素の挿入や削除が頻繁に行われる場合に効率的です。
  2. ArrayDequeは、ループ配列を使用してキューを実装したクラスです。ArrayDequeクラスはQueueインターフェースも実装しており、必要に応じて自動的に拡張され、両方向のキュー操作がサポートされています。
  3. PriorityQueueは、優先度に基づいたキューであり、Queueインターフェースを実装したクラスです。要素の優先度に基づいて並べ替えを行い、キューから取り出される要素は常に最も高い優先度を持つ要素です。

以下是一些常见的キュー操作:

  1. キューにエントリーするには、add()メソッドまたはoffer()メソッドを使用して要素をキューの末尾に追加します。
Queue<Integer> queue = new LinkedList<>();
queue.add(1);
queue.offer(2);
  1. キューからの要素の削除と返却には、remove()またはpoll()メソッドを使用してキューの先頭から削除します。
Queue<Integer> queue = new LinkedList<>();
queue.add(1);
queue.add(2);
int first = queue.remove(); // 删除并返回1
int second = queue.poll(); // 删除并返回2
  1. キューの先頭要素を取得するには、element()またはpeek()メソッドを使用します。これにより、要素を取得するだけで、削除はされません。
Queue<Integer> queue = new LinkedList<>();
queue.add(1);
queue.add(2);
int first = queue.element(); // 获取1
int second = queue.peek(); // 获取1

キューが空の場合、remove()やelement()メソッドを使用するとNoSuchElementException例外がスローされますが、poll()やpeek()メソッドを使用するとnullが返される点に注意する必要があります。

キューは、多くのアルゴリズムやプログラム設計に広く使われるデータ構造です。 Javaプログラマにとって、キューの基本操作と一般的な実装クラスの理解は非常に重要です。

bannerAds