在 stackoverflow 和 web 中有几个关于此的主题,我无法清楚地理解它们。我在 Nicklas 的 stackoverflow 和他的代表中找到了这个答案,这让我对这个话题有了一些有意义的见解。
一些 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 |
+----------------------+
Map aMap = new HashMap();
aMap.put(key,value);
- 谁能解释一下'什么是偏移量及其价值?偏移值在哪里被映射?
- 那个哈希表是什么?它是一个对象数组吗?如果是,每个对象是否都有一个键、值 1 和一个引用属性?
任何人都可以一步一步地重新解释上图。我无法理解 HashMap 背后的哈希机制。