学习effective java-9对所有对象共同的方法之覆写equals方法时请同时覆写hashCode

该知识点是自己从书籍中学习的笔记

   在很多情况下,如果覆写了equals方法,但是未覆写hashCode话,会导致错误发生。而这种错误发生debug是很困难的。如果未覆写hashCode的话,那么HashMap,HashSet,HashTable集合类将会有很大的问题。

  对于hashCode有这样的规约:

  1. 如果一个对象的equals作比较并且该对一直未被修改的话,那么该对象返回的hashCode一定是一样的在运行期间。当然hashCode在不同的机器、不同的运行期间是可以不同的。

2.  如果两个对象通过equals方法对比是相等的话,那么其hashCode也必然相等;如果两个对象通过equals不相等的话,那么其hashCode也必然不等。

 当覆写hashCode方法的时候,不要指望通过排除计算hashCode的一步的域方式来提高性能。否则的话,会导致hashCode范围很小,分布的链会很长,在查找的时候会很慢。

总之,如果两个对象通过equals方法比较相等的话,请记住一定要覆写hashCode方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值