Queueの詳細
キューとは、先入れ先出し(FIFO: First-In-First-Out)の原則に従った、一般的なデータ構造です。キューでは、新しい要素はキューの後端に挿入され、既にある要素はキューの前端から取り出されます。
Javaでは、QueueはCollectionインターフェースを継承するQueueインターフェースによって定義されます。Queueインターフェースは、Queue内の要素を操作するためのメソッドのセットを提供し、一般的に使用されるメソッドを以下に示します。
- natively に指定の高機能キューの末尾要素を追加し、追加ができない場合はエラーを発生させます。
- E e をキューの末尾に追加し、キューがいっぱいの場合falseを返します。
- E remove():キューの先頭の要素を削除して返します。キューが空の場合は例外をスローします。
- poll(): キューの先頭要素を取り出して返します。 キューが空の場合は null を返します。
- `natively`における日本語での言い換え:E element():キュー先頭の要素を返す。ただし、キューが空の場合、例外をスローする。
- E peek(): キュー先頭の要素を返します。キューが空の場合はnullを返します。
コレクションインターフェイスから継承されたメソッドに加えて、キューインターフェイスは、次のような固有のメソッドも定義します。
- 末尾に要素を追加し、キューがいっぱいならfalseを返す
- poll():キューの先頭要素を取り除いて返却する.キューが空の場合、null を返す.
- E peek():キューの先頭の要素を取得します。キューが空の場合はnullを返します。
キューインターフェースの一般的な実装クラスには次のようなものがあります。
- LinkedList:連結リストに基づく実装で、キューや両端キューとして使用可能。
- 配列ベースの実装であるArrayDequeは、キューと両端キューとして使用できます。
- ヒープ実装の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があります。