018 オブジェクト指向の深化(オブジェクトの比較とハッシュコーディング) 023 問題

問題

以下の Book クラスがあります。このクラスは書籍を表現しています。equals メソッドと hashCode メソッドを適切に実装してください。

import java.util.Objects;

public class Book {
    private String title;
    private String author;
    private int year;

    // コンストラクタやゲッター、セッターなどは省略

    // equals メソッドと hashCode メソッドを実装
}

ヒント

equals メソッドは、2つのオブジェクトが等しいかどうかを判断するために使用されます。以下の基本的なステップに従って equals メソッドを実装できます。

  1. パラメータとして渡されたオブジェクトが、this オブジェクトと同じインスタンスであるかを確認します。
  2. パラメータが null でないことを確認します。
  3. パラメータが同じクラスのインスタンスであることを確認します。
  4. インスタンス変数ごとに、その値が等しいかどうかを比較します。

Objects.equals メソッドを使用して、null を考慮した等価性の比較を行うことができます。

hashCode メソッドは、等しいと判断されるオブジェクトに対して同じハッシュコードを生成する必要があります。以下の基本的なステップに従って hashCode メソッドを実装できます。

  1. int 型の変数を初期化します(通常は result と呼ばれます)。
  2. 各インスタンス変数のハッシュコードを計算し、result に組み込みます。
  3. 最終的な result を返します。

これらのステップに従って、Book クラスの equals メソッドと hashCode メソッドを実装してみてください。

解答例

「018 オブジェクト指向の深化」問題集リスト