文章目录
说说Java中HashMap的原理
Drip
2025-03-09 17:29
累计阅读5
评论0

HashMap是基于哈希表的数据结构,用于存储键值对。其核心是将键的哈希值映射到数组的索引位置。在JDK1.7以前,通过数组,链表来解决哈希冲突。JDK1.8以后通过数组,链表,红黑树来处理哈希冲突。

HashMap的初始容量是16,负载因子是0.75。如果数组容量超过16*0.75=12后,则开始扩容操作。容量*2并重新分配元素位置。

具体添加键值对的方式是这样的:

  1. 首先通过key计算出table的一个索引

  2. 判断索引处是否有值

    1. 没有,直接插入

    2. 有,要判断value是否相同

      1. 相同,替换即可

      2. 不同的话,还要判断此时是红黑树结构还是链表结构

        1. 红黑树添加元素操作

        2. 链表添加元素操作

          1. 尾插法后,判断当前链表长度是否超过8,数组长度是否超过64。如果是,则转换成红黑树。或者检验table表是否需要扩容。

评论