java の Queue の使い方は?

JavaにおけるQueueは、先入れ先出し(FIFO)の原則で要素を管理するデータ構造です。Queueインターフェイスは、要素の追加、削除、検査を行うメソッドを定義しています。

一般的なキューの実装クラスには以下があります。

  1. LinkedList:リンクドリストに基づくキュー。双方向キューとして利用可能。
  2. 配列ベースの双方向キューである ArrayDeque は、キューやスタックとして使用できます。
  3. 優先度キュー: 優先度ヒープに基づいたキューで、要素は優先度順に並んでいる。
  4. BlockingQueue: キューが空または一杯のときに待機する機能を提供する、ブロックキューのインターフェース。

Queue のよく使われるメソッドとしては、例えば以下が挙げられます。

  1. add(element) : キューの最後に要素を追加します。 キューがいっぱいの場合は例外がスローされます。
  2. offer(要素): キューの最後に要素を追加し、キューが一杯の場合はfalseを返す。
  3. remove():キューの先頭要素を取り出し、キューが空の場合は例外をスローする。
  4. poll(): キューの先頭要素を取り出して、キューが空の場合はnullを返します。
  5. 要素の取得: キューの先頭の要素を取得するが、削除しない。キューが空の場合は例外をスローする。
  6. peek():キューの先頭の要素を何も削除しないで取得し、キューが空の場合はnullを返す。

キューを使用する一例を以下に示します。

import java.util.LinkedList;
import java.util.Queue;

public class QueueExample {
    public static void main(String[] args) {
        Queue<String> queue = new LinkedList<>();
        
        queue.offer("A"); // 添加元素到队列尾部
        queue.offer("B");
        queue.offer("C");
        
        System.out.println(queue); // 输出队列:[A, B, C]
        
        String element = queue.poll(); // 移除队列头部的元素
        System.out.println(element); // 输出被移除的元素:A
        
        System.out.println(queue); // 输出队列:[B, C]
        
        String peekElement = queue.peek(); // 获取队列头部的元素
        System.out.println(peekElement); // 输出队列头部的元素:B
    }
}

注意:マルチスレッド環境では、スレッドセーフ性を保証するために、BlockingQueueの使用を優先してください。

bannerAds