在堆栈溢出和网络中有几个主题,我无法清楚地理解它们。我在尼可拉斯的“堆积如山”中找到了这个答案,他的陈述让我对这个话题有了一些有意义的见解。
一些ASCII艺术
key.hashCode()
|
| 32-bit value
| hash table
V +------------+ +----------------------+
HashMap.hash() ----+ | reference | -> | key1 | value1 | null |
| |------------| +----------------------+
| | null |
| offset |------------| +---------------------+
+--------> | reference | -> | key1 | value1 | ref |
|------------| +---------------------+
| .... | |
+----------------+
V
+----------------------+
| key2 | value2 | null |
+----------------------+What hashing function does Java use to implement Hashtable class?
Map aMap = new HashMap();
aMap.put(key,value);任何人都可以一步一步地重新解释上面的图表.我无法理解HashMap背后的散列机制.
发布于 2013-09-24 23:10:15
首先,让我解释哈希搜索的概念:
在那里,我们只有单键"hello",存储在单元格hash_table9中;
当您搜索表中省略的word时,您将转到空桶或桶,后者不包含您的键。所以,搜索失败。
如果哈希表太宽(例如,大小与字典相同),则平均桶大小为~1元素(如果散列函数具有良好的扩展性)。所以,搜索一个键将是快速的-只需计算哈希和,转到桶,并迭代桶中的1-2个元素。
第二,我将回答你的问题:
https://stackoverflow.com/questions/18992826
复制相似问题