哈希码在Java中的用途是什么?

2022-08-31 06:42:21

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


答案 1

hashCode()用于在 、 、 等实现中的存储桶HashHashMapHashTableHashSet

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

当您这样做时,它将获取元素的哈希代码,然后查找哈希代码指向的存储桶。如果在同一存储桶中找到 1 个以上的元素(多个对象可以具有相同的哈希代码),则它使用该方法计算对象是否相等,然后确定是真还是假,或者决定是否可以在集合中添加元素。contains()equals()contains()


答案 2

来自 Javadoc

返回对象的哈希代码值。支持此方法是为了使哈希表(如 提供的哈希表)受益。java.util.Hashtable

总合同是:hashCode

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

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

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

尽管合理实用,但由类 Object 定义的 hashCode 方法确实为不同的对象返回不同的整数。(这通常是通过将对象的内部地址转换为整数来实现的,但 Java 编程语言不需要这种实现技术。