为什么重写equals要重写hashcode方法
equals()默认使用"=="进行对象的判定,而在Java中,相同对象所对应的hashcode值也应该是相同的,但如果hashcode相同,对象不一定相同
一致性:如果两个对象使用 equals 方法比较结果为 true,那么它们的 hashCode 值必须相同。也就是说,如果 obj1.equals(obj2) 返回 true,那么 obj1.hashCode() 必须等于 obj2.hashCode()。
非一致性:如果两个对象的 hashCode 值相同,它们使用 equals 方法比较的结果不一定为 true。即 obj1.hashCode() == obj2.hashCode() 时,obj1.equals(obj2) 可能为 false,这种情况称为哈希冲突。
同时,哈希表等数据结构需要依赖于hashcode,需要确保相等的对象具有相同的哈希码,但相同哈希码的对象不一定相等。

浙公网安备 33010602011771号