科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道改写equal()的同时记得要改写hashcode

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

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

  这个是由于要遵从java.lang.object的规范第二条:      两个根据equal()相等的对象他们返回的hashcode值也必然相等。      如果你改写了equal()方法,令两个实际不是一个对象的两个实例在逻辑上相等了。

作者:中国IT实验室 来源:中国IT实验室 2007年9月25日

关键字: 编程 java

  • 评论
  • 分享微博
  • 分享邮件

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

查看本文来源

    • 评论
    • 分享微博
    • 分享邮件