Java Collectionsを知る(五)


Queue interface
キューのインタフェース定義:
public interface Queue<E> extends Collection<E> {
    E element();
    boolean offer(E e);
    E peek();
    E poll();
    E remove();
}

キューの各メソッドには、操作に失敗すると例外が放出され、失敗すると特定の値が返され、戻り値のタイプは特定のメソッドの定義に依存します.
Throws Exception
Returns special value
Insert
add(e)
offer(e)
Remove
remove()
poll()
Examine
element()
peek()
Queueは、その収容可能な要素の数を制限することを許可します.このようなqueueはbounded(境界付き)と呼ばれ、java.util.concurrentのqueue実装は境界があり、java.utilの実装はそうではありません.
次の例では、パラメータが逆数の時間値である逆数タイマを示します.
import java.util.*;

public class Countdown {
    public static void main(String[] args)
            throws InterruptedException {
        int time = Integer.parseInt(args[0]);
        Queue<Integer> queue = new LinkedList<Integer>();
        for (int i = time; i >= 0; i--)
            queue.add(i);
        while (!queue.isEmpty()) {
            System.out.println(queue.remove());
            Thread.sleep(1000);
        }
    }
}

次の例では、PriorityQueueクラスを使用します.Priority queueは優先キューであり、デフォルトでは要素の増分順に並べられます.このキューを使用して、ヒープソートもシミュレートします(PriorityQueueを構築する際にヒープソートアルゴリズムを使用する必要があります):
static <E> List<E> heapSort(Collection<E> c) {
    Queue<E> queue = new PriorityQueue<E>(c);
    List<E> result = new ArrayList<E>();
    while (!queue.isEmpty())
        result.add(queue.remove());
    return result;
}

(to be continued...)