重写 equals() 时为什么必须同时重写 hashCode()?

Java

  1. A.编译器强制要求,只重写一个会报错
  2. B.否则 equals 方法会直接失效,程序中任意两个对象之间的比较结果都会永远返回 false
  3. C.equals 相等则 hashCode 须相等,否则 HashMap/HashSet 找不到
  4. D.为了让对象可以序列化并在网络上传输