Code Fix

上級equals と hashCode を必ずセットで実装する理由 › パターン3

equals と hashCode を必ずセットで実装する理由

HashSetやHashMapが先にハッシュ値で振り分けるためです。

 1  public class Main {
 2      static class P {
 3          int id;
 4          P(int id) { this.id = id; }
 5          public boolean equals(__________ o) { return ((P) o).id == id; }
                                       ^
 6      }
 7      public static void main(String[] args) {
 8          Object a = new P(1);
 9          System.out.println(a.equals(new P(1)));
10      }
11  }
出力: false期待: true (コンパイルは通っています)

空欄を埋めてビルドを通す

広告
広告スロット(未設定)

equals と hashCode を必ずセットで実装する理由

引数をObjectにする理由も扱います。

このエラーの解説と類題をまとめて見る →

広告
広告スロット(未設定)