Tag: 哈希

hashCode()是如何用Java实现的

hashCode()是如何实现的? 我的假设是它使用对象内存位置作为运行哈希函数的初始数(种子)。 然而,这种情况并非如此。 我也看过Hash:它是如何在内部工作的? 但它没有回答我的问题。 是的我可以下载SDK,但在我这样做并查看代码之前,也许其他人已经了解它。 谢谢 :) 编辑:我知道它应该被覆盖等等,所以请尽量保持主题:)

关于HashMap put()和get()方法如何工作的内部结构(仅基本逻辑)

当我们使用put()方法在HashMap类中放置一个键实例说“key”和一个Value实例说“value”时, HashMap类在内部做了什么。 当我们说hashMap.get(key)时,它如何检索值? 编辑 :我不想要这里的细节,基本上试图理解更大的图片以及equals()和hashcode()方法在put()和get()操作中的作用。

java.util.HashMap和HashSet的内部实现

我一直在尝试理解java.util.HashMap和java.util.HashSet的内部实现。 以下是我脑海中浮现的疑惑: 什么是HashMap / HashSet中@Override public int hashcode()的重要性? 这个哈希码在内部使用在哪里? 我一般看到HashMap的键是一个像myMap这样的myMap 。 我可以将值映射到someObject (而不是String),如myMap吗? 我需要遵守的所有合同成功实现了什么? 提前致谢 ! 编辑: 我们是说密钥的哈希码(check!)是在哈希表中映射值的实际内容吗? 当我们做myMap.get(someKey); java在内部调用someKey.hashCode()来获取哈希表中要查找结果值的数字? 答:是的。 编辑2: 在java.util.HashSet ,从哪里为Hash表生成密钥? 它来自我们正在添加的对象,例如。 mySet.add(myObject); 那么myObject.hashCode()将决定它在哈希表中的位置? (因为我们不在HashSet中给出键)。 答:添加的对象成为关键。 价值是假的!

Java – TreeSet和hashCode()

我有一个关于TreeSet集合和hashCode方法的快速问题。 我有一个TreeSet ,我正在添加对象,在添加对象之前,我使用contains方法检查它是否存在于TreeSet contains 。 我有2个不同的对象,每个对象使用我的hashCode方法实现产生一个不同的hashCode,例如: public int hashCode() { int hash = 7; hash = hash * 31 + anAttribute.hashCode(); hash = hash * 31 + anotherAttribute.hashCode(); hash = hash * 31 + yetAnotherAttribute.hashCode(); return hash; } 特定运行的hashCodes是:76126352和76126353(对象在一个属性中仅相差一位)。 即使hashCodes不同,contains方法也会为这些对象返回true。 有什么想法吗? 这真的令人困惑,真的很感激帮助。

可变对象和hashCode

有以下课程: public class Member { private int x; private long y; private double d; public Member(int x, long y, double d) { this.x = x; this.y = y; this.d = d; } @Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + x; result = […]

初始化类型Generic的Java通用数组

所以我有一个我正在开发的通用HashTable类,我想将它一般用于任意数量的传入类型,我还想将内部存储数组初始化为LinkedList的数组(用于冲突),其中每个LinkedList都是提前指定的(对于类型安全性)是HashTable类中generics的类型。 我怎么能做到这一点? 以下代码最能说明我的意图,但当然不能编译。 public class HashTable { private LinkedList[] m_storage; public HashTable(int initialSize) { m_storage = new LinkedList[initialSize]; } }