ボンジュール・マドモアゼル

本サイトの情報は自己責任にてご利用下さい。

[Java] Queue を LIFO のスタックとして使う

 
『プログラミング言語Java第4版』の 21.7 Queue には次のような記述があります。
キューは、たいていは先入れ先出し(first-in-first-out)順序で操作しますが、後入れ先出し(last-in-first-out)順序(スタックと呼ばれます)[...]も可能です。
Queues often operate on a first-in-first-out ordering, but it is also possible to have last-in-first-out ordering (commonly known as a stack) or to have a specific ordering defined by a comparator or by comparable elements.Each implementation must specify its ordering properties.
この言明はおそらく 「Queue インタフェースは、取り出される要素の順序が FIFO か LIFO であるかは規定していない。そのセマンティクスは実装によって決定される」ということを言っているのでしょう。

さて、実際に Queue インタフェースをスタックとして利用するには、どのようにすればよいのでしょうか。
Java SE6 では、Collections の static メソッド asLifoQueue を使えばいいようです。

LIFO キューとして振る舞う Queue オブジェクト

Java SE6 では、SE6 で新たに導入された Deque(デック)インタフェースをLinkedList が実装しており、Collections クラスに次のような static メソッドが追加されています。

public static <T> Queue<T> asLifoQueue(Deque<T> deque)

使用例:
Queue<String> stack = Collections.asLifoQueue(new LinkedList());
  1. 2012/04/03(火) 10:17:57|
  2. Java|
  3. トラックバック(-)|
  4. コメント:0
<<ADOX Table を Append し Connection.Close で「Microsoft Access for Windows は動作を停止しました」のエラーが発生 | ホーム | Java 型理論の記号のまとめ>>

コメント

コメントの投稿

管理者にだけ表示を許可する

画像の文字を半角数字で下記ボックスに記入ください。
文字が読みにくい場合はブラウザの更新をすると新しい文字列が表示されます。