根据Java规范的规定,如果两个对象相等,那么它们的哈希值必须相等。也就是说如果 equals 方法判断两个对象是相等的,那这两个对象的 hashCode 值也要相等。如果重写 equals() 时没有重写 hashCode() 方法的话就可能会导致 equals 方法判断是相等的两个对象,hashCode 值却不相等。
equals
hashCode
equals()
hashCode()
例如hashset集合中插入的对象重写 equals()但是没有重写 hashCode() 就会导致插入重复的元素。