java中hashcode方法的目的是什么?

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

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

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


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

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

您必须始终串联覆盖equalshashCode ,以满足其相互依赖的合同。 即使是最低限度的软件工程标准,在矛盾的情况下实现它们的类也是简单的破坏和不可接受的。

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

请检查以下链接以了解使用散列的原因

1 : http : //java.dzone.com/articles/java-hashing以下链接也会帮助你。

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

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

哈希码是一种更强大的属性,因为它可以告诉您两个对象是否有些相似或完全不同。 由于这个原因,哈希表可以找到具有O(1)操作的键的值。

 why there is a hashcode() method in Java? 

基本上每当我们插入一个唯一的数据结构时,数据结构就确保没有插入重复的对象。 怎么做?
这是通过对象正在实现的契约来完成的, hashcode()将唯一ID作为一个人的SSN。 但是如果你想要检索一个特定的对象然后猜测匹配SSN后应该调用什么,是的,你猜对了它是equals()