M_F_X_B_K
M_F_X_B_K
采纳率100%
2016-08-17 07:56 阅读 1.4k
已采纳

java中hashcode到底有什么用,用于什么情况,怎么用

求大神帮我说说object中的hashcode到底有什么用处,toString的重写可以直接输出我们想要的东西,但是hashcode输出的全是
整形数据,到底有什么用啊,完全懵逼,谢谢各位大神帮忙解说一下

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

2条回答 默认 最新

  • 已采纳
    shensky711 HansChen_ 2016-08-17 08:03

    就是哈希值.

    覆盖equals时总要覆盖hashCode 
    一个很常见的错误根源在于没有覆盖hashCode方法。在每个覆盖了equals方法的类中,也必须覆盖hashCode方法。如果不这样做的话,就会违反Object.hashCode的通用约定,从而导致该类无法结合所有基于散列的集合一起正常运作,这样的集合包括HashMap、HashSet和Hashtable。 
    - 在应用程序的执行期间,只要对象的equals方法的比较操作所用到的信息没有被修改,那么对这同一个对象调用多次,hashCode方法都必须始终如一地返回同一个整数。
    - 如果两个对象根据equals()方法比较是相等的,那么调用这两个对象中任意一个对象的hashCode方法都必须产生同样的整数结果。
    - 如果两个对象根据equals()方法比较是不相等的,那么调用这两个对象中任意一个对象的hashCode方法,则不一定要产生相同的整数结果。但是程序员应该知道,给不相等的对象产生截然不同的整数结果,有可能提高散列表的性能。
    

    hashCode()的返回值和equals()的关系如下:
    如果x.equals(y)返回“true”,那么x和y的hashCode()必须相等。
    如果x.equals(y)返回“false”,那么x和y的hashCode()有可能相等,也有可能不等。

    点赞 评论 复制链接分享
  • oyljerry oyljerry 2016-08-17 08:06

相关推荐