StackからDequeとArrayDequeへ
レガシーなStackクラスの代わりに、DequeインターフェースとArrayDequeを使用する。
コード比較
✕ Legacy Stack
Stack<String> stack = new Stack<>();
stack.push("task");
String next = stack.pop();
✓ Deque API
Deque<String> stack = new ArrayDeque<>();
stack.push("task");
String next = stack.pop();
このコードに問題がありますか? お知らせください。
モダンな方法が優れている理由
優れた抽象化
Dequeはスタック操作とキュー操作の両方を明示的にモデル化します。
低いオーバーヘッド
ArrayDequeはVectorのレガシーな同期処理を回避します。
高い柔軟性
同じインターフェースでLIFOとFIFOのアルゴリズムをサポートします。
旧来のアプローチ
Stack
モダンなアプローチ
ArrayDequeを使用したDeque
JDKバージョン
6
難易度
初級
JDKサポート
StackからDequeとArrayDequeへ
利用可能
JDK 6(2006年12月)以降、利用可能
仕組み
Stackはレガシーな同期Vectorクラスを拡張しています。Dequeはスタック操作を直接モデル化し、ArrayDequeはメモリ内のLIFO処理に推奨される汎用実装です。
関連ドキュメント
証明