Javaのデータ構造であるキュー(Queue)について詳しく説明します。

キューは、先入先出(FIFO)のデータ構造であり、要素を一方の端に挿入し、他方の端から削除できます。キューでは、要素を挿入する端を「リア」と呼び、要素を削除する端を「フロント」と呼びます。

JavaのQueueインターフェースは、Collectionインターフェースを継承したサブインターフェースであり、キューを操作するためのいくつかのメソッドを定義しています。一般的に使用される実装クラスには、LinkedListとArrayDequeがあります。

Queueインターフェースでよく使われるメソッドは以下の通りです:

  1. enqueue(E e):要素eをキューの末尾に追加します。
  2. dequeue()関数:キューの先頭の要素を削除し、その要素を返す。
  3. peek():先頭の要素を取得しますが、削除はしません。
  4. isEmpty()メソッドは、キューが空かどうかを確認します。
  5. size()メソッドは、キュー内の要素の数を取得します。

LinkedListとArrayDequeはJavaでよく使われるキューの実装クラスです。両方がQueueインターフェースを実装しているため、Queueインターフェースで定義されているメソッドを直接使用することができます。

  1. LinkedListは双方向リンクリストを実装し、キューとして使用することができます。enqueue(E e)メソッドは要素をリストの末尾に挿入し、dequeue()メソッドはリストの最初の要素を削除してその要素を返します。

サンプルコード:

Queue<Integer> queue = new LinkedList<>();

queue.enqueue(1); // 队列中插入元素1
queue.enqueue(2); // 队列中插入元素2

System.out.println(queue.peek()); // 输出队头元素

int num = queue.dequeue(); // 删除队头元素,并返回该元素
System.out.println(num); // 输出删除的元素

System.out.println(queue.isEmpty()); // 判断队列是否为空
System.out.println(queue.size()); // 输出队列中元素的个数
  1. ArrayDequeは、双方向キューの実装クラスであり、キューの実装としても使用できます。そのenqueue(E e)メソッドは要素を双方向キューの末尾に挿入し、dequeue()メソッドは双方向キューの最初の要素を削除してその要素を返します。

サンプルコード:

Queue<Integer> queue = new ArrayDeque<>();

queue.enqueue(1); // 队列中插入元素1
queue.enqueue(2); // 队列中插入元素2

System.out.println(queue.peek()); // 输出队头元素

int num = queue.dequeue(); // 删除队头元素,并返回该元素
System.out.println(num); // 输出删除的元素

System.out.println(queue.isEmpty()); // 判断队列是否为空
System.out.println(queue.size()); // 输出队列中元素的个数

キューは非常に広範囲に利用されており、例えばメッセージキュー、スレッドプールなどの実装にキューのデータ構造を使用することができます。

bannerAds