当添加一个键值对元素时,HashMap发生了什么?

一.了解HashMap的存储结构

       HashMap内部数据结构使用数组+链表+红黑树进行存储。数组类型为Node[], 每个 Node都
保存了某个KV键值对元素的key、value 、hash 、next 等值。于next的存在,所以每个Node对象都是一个单向链表中的组成节点。如图中代码所示:

        HashMap的底层采用的存储方式:数组+链表+红黑树,当新添加一个键值对元素时,通过该元素的key的hash 值,计算该元素在数组中应该保存的下标位置。如果该下标位置如果已经存在其它Node 对象(产生哈希冲突) , 则采用链地址法处理,即将新添加的键值对元素将以链表形式存储。当链表的长度超过8并且数组长度大于64时,为了避免查找搜索性能下降,该链表会转换成一个红黑树。如图所示:

二.HashMap保存一个键值对的方法 

        HashMap调用put()方法传把进来的Key和Value传递给putVal()得到返回的值

        putVal()方法:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ButNullPointer

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值