在网站看到一个有关 Java Hash 表的的处理和存储逻辑。
key.hashCode()
|
| 32-bit value
| hash table
V +------------+ +----------------------+
HashMap.hash() --+ | reference | -> | key1 | value1 | null |
| |------------| +----------------------+
| modulo size | null |
| = offset |------------| +---------------------+
+--------------> | reference | -> | key2 | value2 | ref |
|------------| +---------------------+
| .... | |
+----------------+
V
+----------------------+
| key3 | value3 | null |
+----------------------+
上面的图片做的还是非常好的,逻辑也解释得非常清楚。
涉及到了:
- 对象的 Hash 值计算
- 将数据插入到 Hash 表中
- 如果出现了 Hash 冲突后怎么办
这 3 个点是我们在处理 Hash 表的时候的几个关键点。