龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 软件开发 > JAVA开发 >

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

时间:2009-12-23 15:42来源:未知 作者:admin 点击:
分享到:
这个是由于要遵从Java.lang.object的规范第二条: 两个根据equal()相等的对象他们返回的hashcode值也必然相等。 假如你改写了equal()方法,令两个实际不是一个对象的两个实例在逻辑上相等了

  这个是由于要遵从Java.lang.object的规范第二条:
  
  两个根据equal()相等的对象他们返回的hashcode值也必然相等。
  
  假如你改写了equal()方法,令两个实际不是一个对象的两个实例在逻辑上相等了,但是hashcode却是不等。
  
  所以要记得改写hashcode。
  
  不改写会带来什么后果呢?当然,比如你在用hashmap,hashtable之类的设计hashcode的类的时候,就会出麻烦了。
  
  至于如何改写一个hashcode,这就有好有坏了,看各人的功底了。现在还有专门的科学家在研究优秀的hash算法。
  
精彩图集

赞助商链接