A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© pcy1022 中级黑马   /  2015-1-2 20:43  /  1019 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

重写hash方法和equals方法不是很明白,求指教。什么情况下需要重写呢?哪些类有这个方法?

2 个回复

倒序浏览
Object的equal()方法,是比较地址,在实际应用中几乎无意义,因为当new对象后,地址肯定不相等.
所以理论上所有类都应该重写equal()方法,不过有时候如果自定义类不使用这个方法,那么重写毫无意义
回复 使用道具 举报
hash方法不太知道,但是hashcode方法是为了提高集合的存取效率的,换言之hashcode值相同,equal方法得到的值不一定相同;但是equals方法得到的值不同,那么hashcode方法得到的值一定不相同。
equals方法再obj中返回的是对对象的地址值,如2楼所说;至于你说的什么时候复写这个方法:去个例子,String这个类中,因为它复写了equal方法,所以String对象在使用equals方法的时候比较的才是字符串是否相等而不是比较的地址值,所以什么时候复写那要看你想要比较什么东西,如果是比较地址值的话那就不用复写,如果不是的话那就需要复写,ok仅此而已
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马