Java - Queue インターフェースと関連クラス

Queue インターフェース

Queue インターフェースは J2SE 5.0 で追加されたインターフェースであり、First-In, First-Out 形式を持つ Queue データ構造を持つ。Queue インターフェースは、保存されたデータの最初のデータだけを削除できる。他のインターフェースとは異なり、データを保存するための offer()、削除するための remove()、データを取得するための element()、peek()、poll() などのメソッドを持っている。Queue インターフェースを実装した下位クラスには LinkedList、PriorityQueue がある。

Queue メソッド

メソッド 説明
boolean add(E e) Queue(キュー)にオブジェクトを入れ、成功すると true を返す。
boolean offer(E e) Queue(キュー)にオブジェクトを入れる。
E poll() Queue(キュー)からオブジェクトを返し、空であれば null を返す。
E peek() Queue(キュー)の一番下にあるオブジェクトを返し、オブジェクトをキューから削除しない。
E remove() Queue(キュー)の一番下にあるオブジェクトを返し、オブジェクトをキューから削除する。

PriorityQueue

PriorityQueue の例

package com.devkuma.tutorial.java.util.collection;

import java.util.Iterator;
import java.util.PriorityQueue;
import java.util.Queue;

public class PriorityQueueClass {

    public static void main(String[] args) {

        Queue<String> queue = new PriorityQueue<String>();
        queue.add("a");
        queue.add("b");
        queue.add("c");
        queue.add("d");
        queue.add("e");
        System.out.println("head element: " + queue.element());
        System.out.println("head peek : " + queue.peek());

        System.out.println("iterating the queue elements:");
        Iterator<String> itr = queue.iterator();
        while (itr.hasNext()) {
            System.out.println(itr.next());
        }

        System.out.println("head remove : " + queue.remove());
        System.out.println("head poll : " + queue.poll());

        System.out.println("after removing two elements:");
        Iterator<String> itr2 = queue.iterator();
        while (itr2.hasNext()) {
            System.out.println(itr2.next());
        }
    }
}

実行結果は次のとおりである。

head element: a
head peek : a
iterating the queue elements:
a
b
c
d
e
head remove : a
head poll : b
after removing two elements:
c
d
e