問題
以下の要件に基づいて、Deque インターフェースを実装したクラス CustomBoundedDeque を作成してください。
- コンストラクタでデックの最大容量を指定します。
- addFirst メソッド: デックの先頭に要素を追加します。ただし、デックが最大容量に達した場合は先頭の要素を削除してから追加します。
- addLast メソッド: デックの末尾に要素を追加します。ただし、デックが最大容量に達した場合は末尾の要素を削除してから追加します。
- removeFirst メソッド: デックの先頭から要素を取り出し、取り出した要素を返します。デックが空の場合は例外をスローしてください。
- removeLast メソッド: デックの末尾から要素を取り出し、取り出した要素を返します。デックが空の場合は例外をスローしてください。
- isEmpty メソッド: デックが空かどうかを判定します。
ヒント
- クラスのフィールド:
ArrayDeque
インスタンスを持ちます。これはデックの実装に使用されます。- 最大容量を表す整数型のフィールドを持ちます。
- コンストラクタ:
- 最大容量を引数として受け取り、デックの初期化を行います。
addFirst
メソッド:- デックが最大容量に達した場合、先頭の要素を削除します。
- 引数として受け取った要素を先頭に追加します。
addLast
メソッド:- デックが最大容量に達した場合、末尾の要素を削除します。
- 引数として受け取った要素を末尾に追加します。
removeFirst
メソッド:- デックが空の場合、例外をスローします。
- デックの先頭から要素を削除して返します。
removeLast
メソッド:- デックが空の場合、例外をスローします。
- デックの末尾から要素を削除して返します。
isEmpty
メソッド:- デックが空かどうかを判定します。
→解答例