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倍);

猜你喜欢

转载自blog.csdn.net/Yyuxiansheng/article/details/109730328
今日推荐