为什么重写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,需要确保相等的对象具有相同的哈希码,但相同哈希码的对象不一定相等。

posted @ 2025-02-16 10:14  茴香儿  阅读(3)  评论(0)    收藏  举报