HashMap底层原码分析

HashMap底层是数组+链表+树形结构(红黑树);

放值方法
1、用key的哈希值,高位不动,低位亦或,然后用得到的值对16取模从而算出放在那里;
2、如果要放值的地方为null,则直接放在那里;
3、如果要放值的地方为 !null,则放在已有值的next位形成链表;
4、如果链表长度超过8位,且容量大小不足64,则扩容;
5、若容量大小扩容为64,若此时链表长度还超过8位,则转化为树形结构;

扩容过程
1、不赋初值默认为16;
2、当长度达到0.75f的时候开始扩容,每次呈两倍扩容;
eg:扩容后容量大小 = 扩容前容量大小 * 2;
3、有一条链长度大于8位以后变为树形结构;

树形结构
1、在HashMap底层中,采取的树形结构为红黑树;
2、红黑树:顾名思义树形结构有红、黑两种颜色,根节点和尾节点都为黑, 且每条链上的黑色节点数量都相同;
3、红黑树是弱平衡查找树(最长的链长度不超过最短的链的2倍);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值