Java中哈希码方法的目的是什么?

2022-09-03 15:05:27

当我们有,方法为什么在Java中有方法?equals()compareTo()hashcode()

如果我们使用我们必须覆盖方法,除了快速访问随机密钥之外,还有什么特殊原因吗?如果我们覆盖该方法,那么可能的实现是什么?HashTablehashcode()hashcode()

Java 如何确保内存中的对象唯一性?


Hashcodes are typically used to enhance the performance of large collections of data.

在我们计算.这是一项额外的任务。当我们对添加到集合中的每个对象执行其他操作时。如何提高性能?hashinghash code


答案 1

您必须始终覆盖并串联,以满足它们相互依赖的合同。一个相互矛盾地实现它们的类是完全破碎的,即使在最低的软件工程标准下也是不可接受的。equalshashCode

至于为什么人们会使用哈希表数据结构:因为它是随机访问键值存储的最快选择。


答案 2

使用该方法,您可以为对象建立“总顺序”。总序是一个相当弱的属性:它只能告诉你一个对象是否“小于”另一个对象,但它让你不知道两个对象“相距多远”。compareTo

例如,如果键值数据结构中有 N 个对象,并且想要查找给定键的值。只有一个总订单,你至少需要O(log N)比较才能找到匹配的键。

哈希代码是一种更强的属性,因为它可以告诉您两个对象是否有些相似或完全不同。多亏了这一点,哈希表可以通过 O(1) 操作找到密钥的值。