HashMap的特点

image

不重复指的是键不能重复
哈希表结构:
JDK8以前:数组 + 链表
JDK8开始:数组 + 链表 + 红黑树

image
image

  • Entry对象中添加的就是键和值,并利用键计算哈希值(跟值无关)
    image

  • 再计算出在数组中应存入的索引。
    image

  • 如果该位置是null,则直接添加
    image

  • 如果该位置不为null,调用equals方法比较键的属性值
    如果键的属性值相同,则会覆盖原有的Entry对象。
    (put方法隐含的覆盖功能)
    image
    image
    如果键的属性值不一样,则会添加新的Entry对象。

    JDK8以前,新的元素添加到数组当中,原先的会挂在新的下面形成链表
    image

    JDK8开始,新的直接挂在老的下面形成链表
    image

  • 当链表长度超过8并且数组长度>=64时,会自动转成红黑树
    image
    image

总结:
image

posted @ 2025-09-03 16:04  lachii  阅读(4)  评论(0)    收藏  举报