問題
以下の要件に基づいて、Deque
インターフェースを実装したクラス CustomDeque
を作成してください。
addFirst
メソッド: デックの先頭に要素を追加します。addLast
メソッド: デックの末尾に要素を追加します。removeFirst
メソッド: デックの先頭から要素を取り出し、取り出した要素を返します。デックが空の場合は例外をスローしてください。removeLast
メソッド: デックの末尾から要素を取り出し、取り出した要素を返します。デックが空の場合は例外をスローしてください。isEmpty
メソッド: デックが空かどうかを判定します。
ヒント
- データ構造の選定:
- デックの実装には、内部的にどのようなデータ構造を使用するかが重要です。
- Javaの標準ライブラリでは、
LinkedList
がデックの実装に適しています。LinkedList
は先頭と末尾への要素の追加と取り出しが効率的です。
- メソッドの実装:
addFirst
メソッドでは、デックの先頭に要素を追加します。addLast
メソッドでは、デックの末尾に要素を追加します。removeFirst
メソッドでは、デックの先頭から要素を取り出します。デックが空の場合は例外をスローします。removeLast
メソッドでは、デックの末尾から要素を取り出します。デックが空の場合は例外をスローします。isEmpty
メソッドでは、デックが空かどうかを判定します。
- JavaのDequeインターフェース:
- Javaの標準ライブラリには
Deque
インターフェースが提供されています。このインターフェースを実装することで、デックの基本的な機能を提供できます。
- Javaの標準ライブラリには
- 例外の取り扱い:
- メソッド内でデックが空の場合に例外をスローする必要があります。Javaでは
NoSuchElementException
が該当します。
- メソッド内でデックが空の場合に例外をスローする必要があります。Javaでは
これらのヒントをもとに、CustomDequeクラスを実装してみてください。
→解答例