Queueの詳細

キューとは、先入れ先出し(FIFO: First-In-First-Out)の原則に従った、一般的なデータ構造です。キューでは、新しい要素はキューの後端に挿入され、既にある要素はキューの前端から取り出されます。

Javaでは、QueueはCollectionインターフェースを継承するQueueインターフェースによって定義されます。Queueインターフェースは、Queue内の要素を操作するためのメソッドのセットを提供し、一般的に使用されるメソッドを以下に示します。

  1. natively に指定の高機能キューの末尾要素を追加し、追加ができない場合はエラーを発生させます。
  2. E e をキューの末尾に追加し、キューがいっぱいの場合falseを返します。
  3. E remove():キューの先頭の要素を削除して返します。キューが空の場合は例外をスローします。
  4. poll(): キューの先頭要素を取り出して返します。 キューが空の場合は null を返します。
  5. `natively`における日本語での言い換え:E element():キュー先頭の要素を返す。ただし、キューが空の場合、例外をスローする。
  6. E peek(): キュー先頭の要素を返します。キューが空の場合はnullを返します。

コレクションインターフェイスから継承されたメソッドに加えて、キューインターフェイスは、次のような固有のメソッドも定義します。

  1. 末尾に要素を追加し、キューがいっぱいならfalseを返す
  2. poll():キューの先頭要素を取り除いて返却する.キューが空の場合、null を返す.
  3. E peek():キューの先頭の要素を取得します。キューが空の場合はnullを返します。

キューインターフェースの一般的な実装クラスには次のようなものがあります。

  1. LinkedList:連結リストに基づく実装で、キューや両端キューとして使用可能。
  2. 配列ベースの実装であるArrayDequeは、キューと両端キューとして使用できます。
  3. ヒープ実装のPriorityQueueは、優先順位付きキューとして使用できます。

LinkedListを用いてキューを実装したサンプルコードを以下に示す:

import java.util.LinkedList;
import java.util.Queue;
public class QueueExample {
public static void main(String[] args) {
Queue<String> queue = new LinkedList<>();
// 添加元素到队列
queue.add("A");
queue.add("B");
queue.add("C");
// 获取队列头部元素并移除
String head = queue.poll();
System.out.println("Head: " + head);
// 获取队列头部元素但不移除
String peek = queue.peek();
System.out.println("Peek: " + peek);
// 遍历队列中的元素
for (String element : queue) {
System.out.println("Element: " + element);
}
}
}

出力を確認してください。

Head: A
Peek: B
Element: B
Element: C

サンプルコードではLinkedListを用いたキューを実装しており、要素の追加、先頭要素の取得と削除、先頭要素の取得のみ、キュー内の要素を反復処理する操作を示しています。

まとめ

キューは先入れ先出し(FIFO)の原則に従う一般的なデータ構造です。Javaは、キューを定義し、キュー内の要素を操作するためのメソッドを提供するキューインターフェースを提供します。一般的に使用されるQueueインターフェースの実装クラスには、LinkedList、ArrayDeque、PriorityQueueがあります。

bannerAds