为了账号安全,请及时绑定邮箱和手机立即绑定

Java中hashCode的用途是什么?

Java中hashCode的用途是什么?

慕丝7291255 2019-11-05 14:55:43
在Java中,obj.hashCode()返回一些值。该哈希码在编程中有什么用?
查看完整描述

3 回答

?
天涯尽头无女友

TA贡献1831条经验 获得超9个赞

hashCode()用于桶装Hash像实施方式中HashMapHashTableHashSet,等。

从中接收的值hashCode()用作存储集合/映射元素的存储桶编号。该存储桶编号是集合/映射中元素的地址

完成后contains(),它将获取元素的哈希码,然后查找哈希码指向的存储桶。如果在同一个存储桶中发现了多个元素(多个对象可以具有相同的哈希码),则它将使用该equals()方法来评估这些对象是否相等,然后确定contains()是对还是错,或者确定元素可以是是否添加到集合中。


查看完整回答
反对 回复 2019-11-05
?
茅侃侃

TA贡献1842条经验 获得超21个赞

从Javadoc:


返回对象的哈希码值。支持此方法是为了受益于哈希表,例如java.util.Hashtable。


的总合同hashCode为:


在Java应用程序执行期间,只要在同一个对象上多次调用它,该hashCode方法就必须始终返回相同的整数,前提是不修改该对象的equals比较中使用的信息。从一个应用程序的执行到同一应用程序的另一执行,此整数不必保持一致。


如果根据equals(Object)方法两个对象相等,则hashCode在两个对象中的每个对象上调用方法必须产生相同的整数结果。


它不要求,如果两个对象根据是不相等的equals(java.lang.Object)方法,然后调用hashCode在每个两个对象的方法必须产生不同的整数结果。但是,程序员应该意识到,为不相等的对象生成不同的整数结果可能会提高哈希表的性能。


在合理可行的范围内,由Object类定义的hashCode方法确实为不同的对象返回不同的整数。(这一般是通过实现将该对象的内部地址转换成一个整数,但不是由在Java编程语言不需要这种实现技巧。)


查看完整回答
反对 回复 2019-11-05
?
慕婉清6462132

TA贡献1804条经验 获得超2个赞

返回的值hashCode()是对象的哈希码,即对象的内存地址(十六进制)。


根据定义,如果两个对象相等,则它们的哈希码也必须相等。如果重写该equals()方法,则会更改两个对象的相等方式,并且Object的实现hashCode()不再有效。因此,如果重写equals()方法,则也必须重写该hashCode()方法。


查看完整回答
反对 回复 2019-11-05
  • 3 回答
  • 0 关注
  • 601 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信