改写equal()的同时记得要改写hashcode

王朝other·作者佚名  2008-05-19
宽屏版  字体: |||超大  

这个是由于要遵从java.lang.object的规范第二条:

两个根据equal()相等的对象他们返回的hashcode值也必然相等。

如果你改写了equal()方法,令两个实际不是一个对象的两个实例在逻辑上相等了,但是hashcode却是不等。

所以要记得改写hashcode。

不改写会带来什么后果呢?当然,比如你在用hashmap,hashtable之类的设计hashcode的类的时候,就会出麻烦了。

至于如何改写一个hashcode,这就有好有坏了,看各人的功底了。现在还有专门的科学家在研究优秀的hash算法。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
© 2005- 王朝网络 版权所有