Java Hash Table(Hash 表)的处理和存储逻辑

在网站看到一个有关 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 |
                                                    +----------------------+

上面的图片做的还是非常好的,逻辑也解释得非常清楚。

2022-11-30_13-48-26

涉及到了:

  • 对象的 Hash 值计算
  • 将数据插入到 Hash 表中
  • 如果出现了 Hash 冲突后怎么办

这 3 个点是我们在处理 Hash 表的时候的几个关键点。