EeBlog(テクニカルブログ)

第45回 BlockingQueueインターフェース

今回のテーマは「BlockingQueue」です。

QueueインターフェースのサブインターフェースにBlockingQueueインターフェースがあります。 BlockingQueueインターフェースを実装するクラスにはLinkedBlockingQueue、ArrayBlockingQueue、PriorityBlokingQueue、DelayQueueなどがあります。

BlockingQueue は容量が制限される場合があります。 LinkedBlockingQueue、ArrayBlockingQueueは容量制限を設定できます。 要領制限のあるBlockingQueueに要素を追加する場合はofferメソッドの使用が推奨されています。 addメソッドやaddAllメソッドでも要素を追加する事ができますが容量制限を超えてしまった場合はIllegalStateException がスローされてしまいます。

(さらに…)

第44回 Queueインターフェース

今回のテーマは「Queue」です。

キューは先に格納されたデータから取り出す性質(FIFO)を持ち、Javaではその機能はQueueインターフェースにより提供されています。 Queueインターフェースは、ListインターフェースやSetインターフェースと同様にCollectionインターフェースのサブインターフェースです。 Queueインターフェースを実装するクラスにはLinkedList、PriorityQueueなどがあります。

次のサンプルコードは要素を3回ごとに改行し出力するプログラムです。(J2SE5.0以上対応)

(さらに…)

第43回 線形探索と二分探索

今回のテーマは「線形探索と二分探索」です。

線形探索は、リストの先頭から順に目的の値と一致するか判定していく探索アルゴリズムです。 どんなリストに対しても適用できますが、あまり効率的とは言えません。 二分探索は、目的の値が探索するリストの中央の値より大きいか小さいかを判断して次の探索範囲を絞りこみ、それを繰り返すことで目的の値を探索するアルゴリズムです。 例えば、{1,2,3,4,5,6,7,8}という値を持つリストから8という値を探す場合、最初の判定で探索範囲が{5,6,7,8}に絞られ、次の判定で{7,8}に絞られるといった感じです。 リストのサイズが大きいほど線形探索より探索効率は非常に良くなりますが、二分探索を適用するためにはリストがソート済みでなければなりません。

(さらに…)