Topic: 关于equals()和hashCode()方法的疑问

  Print this page

1.关于equals()和hashCode()方法的疑问 Copy to clipboard
Posted by: lymhappy123
Posted on: 2008-12-11 19:59

在自定义的类中,如果要比较自定义的类的2个对象,重写了equals()方法的同时,一定要重写hashCode()方法吗?如果2个对象equals,它们的hashcode一定相同吗?hashcode相同的,一定equals吗?

2.Re:关于equals()和hashCode()方法的疑问 [Re: lymhappy123] Copy to clipboard
Posted by: micsolaris
Posted on: 2008-12-11 21:39

重写equal()方法不一定要重写hashCode方法
两个对象的equals不一定说hashCode相等

做个简单的比喻吧,我们每个人都有指纹,并不能肯定说两个人的指纹都不一样,但是一般情况下很难找到两个指纹一样的人。所以在默认的Object中定义了一个hashCode方法来识别,除非你自己重写了这方法,不然我们一般认为hashCode方法后的结果如果相同则为同一个对象

3.Re:关于equals()和hashCode()方法的疑问 [Re: micsolaris] Copy to clipboard
Posted by: JiafanZhou
Posted on: 2008-12-26 23:40

micsolaris wrote:
重写equal()方法不一定要重写hashCode方法
两个对象的equals不一定说hashCode相等


This is usually correct, however when refers to any hash functions like Hashmap or Hashset, then it is compelling to both override equals and hashCode methods.


   Powered by Jute Powerful Forum® Version Jute 1.5.6 Ent
Copyright © 2002-2021 Cjsdn Team. All Righits Reserved. 闽ICP备05005120号-1
客服电话 18559299278    客服信箱 714923@qq.com    客服QQ 714923