上級 › 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の引数はObjectでなければオーバーライドになりません。Pにするとオーバーロードになり呼ばれません。
次の問題