哈希算法(或名:散列算法)

2019-03-21  本文已影响0人  小小卒_oO_

文图简述HashMap中使用的哈希算法

放数据

  1. key.hasCode() 得到键的哈希值
  2. 用哈希值,计算一个下标值 index
  3. 新建 Entry 实例封装键值对数据
  4. 将 Entry 实例放入数组的 index 位置
    4.1. 空位置,直接放入 [如图]
    4.2. 不是空位置,依次用 equals() 比较每一个键是否相等
    4.2.1. 找到相等的键,覆盖原值
    4.2.2. 找不到相等的键,链表连在一起 [如图]
  5. 检查数组容量是否超过最大负载率,容量翻倍 [如图]
    4.1
    4.2.2
    5

取数据

  1. key.hasCode() 得到键的哈希值
  2. 用哈希值,计算一个下标值 index
  3. 依次用 equals() 比较每一个键是否相等
    3.1. 找到相等的键,取出对应的值
    3.2. 找不到相等的键,返回 null 值

参考:https://www.jianshu.com/p/fb4fb24ecc8f

上一篇 下一篇

猜你喜欢

热点阅读