📘
Java Queueインターフェース:メモ
javaのQueueインターフェースについてのメモ。
・Java のコレクションフレームワークの一部
・「FIFO(First-In-First-Out)」 = 先入れ先出し を基本とするデータ構造
・代表的な実装クラス:LinkedList, PriorityQueue, ArrayDeque など
操作一覧
操作 | 例外を投げるメソッド | 安全に扱えるメソッド(null / false を返す) |
---|---|---|
追加 | add(e) |
offer(e) |
削除 | remove() |
poll() |
参照(先頭を見るだけ) | element() |
peek() |
[ A ] → [ B ] → [ C ] → [ D ]
↑ ↑
先頭(pollで取り出す) 末尾(offerで追加する)
ラーメン屋の行列待ちに例えると
ラーメン屋で「先に並んだ人から順番に案内し、新しいお客さんは最後尾に並ぶ」
import java.util.LinkedList;
import java.util.Queue;
public class RamenQueue {
public static void main(String[] args) {
// Queue(待ち行列)を LinkedList で作成
Queue<String> ramenQueue = new LinkedList<>();
// お客さんが並ぶ(入店待ち)
ramenQueue.offer("田中さん");
ramenQueue.offer("佐藤さん");
ramenQueue.offer("鈴木さん");
System.out.println("現在の行列: " + ramenQueue);
// 席に案内(先頭から順番に)
String first = ramenQueue.poll();
System.out.println(first + " が席に案内されました!");
System.out.println("残りの行列: " + ramenQueue);
// 新しいお客さんが並ぶ
ramenQueue.offer("高橋さん");
System.out.println("高橋さんが新しく並びました!");
System.out.println("現在の行列: " + ramenQueue);
// さらに案内
while (!ramenQueue.isEmpty()) {
String customer = ramenQueue.poll();
System.out.println(customer + " が席に案内されました!");
}
System.out.println("行列は空になりました。");
}
}
出力結果
現在の行列: [田中さん, 佐藤さん, 鈴木さん]
田中さん が席に案内されました!
残りの行列: [佐藤さん, 鈴木さん]
高橋さんが新しく並びました!
現在の行列: [佐藤さん, 鈴木さん, 高橋さん]
佐藤さん が席に案内されました!
鈴木さん が席に案内されました!
高橋さん が席に案内されました!
行列は空になりました。
Discussion