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


