Java Collectionsを知る(五)
Queue interface
キューのインタフェース定義:
キューの各メソッドには、操作に失敗すると例外が放出され、失敗すると特定の値が返され、戻り値のタイプは特定のメソッドの定義に依存します.
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の実装はそうではありません.
次の例では、パラメータが逆数の時間値である逆数タイマを示します.
次の例では、PriorityQueueクラスを使用します.Priority queueは優先キューであり、デフォルトでは要素の増分順に並べられます.このキューを使用して、ヒープソートもシミュレートします(PriorityQueueを構築する際にヒープソートアルゴリズムを使用する必要があります):
(to be continued...)
キューのインタフェース定義:
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...)