两个对象值相同 (x.equals(y) == true) ,但却可有不同的 hash code ,这句话对不对?并简要说明理由。
答 对 。
如 果 对 象 要 保 存 在 HashSet 或 HashMap 中 , 它 们 的 equals 相 等 , 那 么 , 它 们 的 hashcode 值 就 必 须 相 等 。如果不是要保存在 HashSet 或 HashMap ,则与 hashcode没有什么关系了, 这时候 hashcode不等是可以的, 例如 arrayList 存储的对 象 就 不 用 实 现 hashcode , 当 然 , 我 们 没 有 理 由 不 实 现 , 通 常 都 会 去 实 现 的 。 对 。如 果 对 象 要 保 存 在 HashSet 或 HashMap 中 , 它 们 的 equals 相 等 , 那 么 , 它 们 的 hashcode 值 就 必 须 相 等 。如果不是要保存HashSet 或 HashMap ,则与 hashcode没有什么关系了, 这时候 hashcode不等是可以的, 例如 arrayList 存储的对象就不用实现 hashcode,当然,我们没有理由不实现,通常都会去实现的 。
暂无解析