Java中hashCode的用途是什么?

在Java中,obj.hashCode()返回一些值。该哈希码在编程中有什么用?



慕丝7291255
浏览 602回答 3
3回答

天涯尽头无女友

hashCode()用于桶装在Hash像实施方式中HashMap,HashTable,HashSet,等。从中接收的值hashCode()用作存储集合/映射元素的存储桶编号。该存储桶编号是集合/映射中元素的地址。完成后contains(),它将获取元素的哈希码,然后查找哈希码指向的存储桶。如果在同一个存储桶中发现了多个元素(多个对象可以具有相同的哈希码),则它将使用该equals()方法来评估这些对象是否相等,然后确定contains()是对还是错,或者确定元素可以是是否添加到集合中。

茅侃侃

从Javadoc:返回对象的哈希码值。支持此方法是为了受益于哈希表,例如java.util.Hashtable。的总合同hashCode为:在Java应用程序执行期间,只要在同一个对象上多次调用它,该hashCode方法就必须始终返回相同的整数,前提是不修改该对象的equals比较中使用的信息。从一个应用程序的执行到同一应用程序的另一执行,此整数不必保持一致。如果根据equals(Object)方法两个对象相等,则hashCode在两个对象中的每个对象上调用方法必须产生相同的整数结果。它不要求,如果两个对象根据是不相等的equals(java.lang.Object)方法,然后调用hashCode在每个两个对象的方法必须产生不同的整数结果。但是,程序员应该意识到,为不相等的对象生成不同的整数结果可能会提高哈希表的性能。在合理可行的范围内,由Object类定义的hashCode方法确实为不同的对象返回不同的整数。(这一般是通过实现将该对象的内部地址转换成一个整数,但不是由在Java编程语言不需要这种实现技巧。)

慕婉清6462132

返回的值hashCode()是对象的哈希码,即对象的内存地址(十六进制)。根据定义,如果两个对象相等,则它们的哈希码也必须相等。如果重写该equals()方法,则会更改两个对象的相等方式,并且Object的实现hashCode()不再有效。因此,如果重写equals()方法,则也必须重写该hashCode()方法。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java