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

文图简述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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。