• 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏吧

JDK1.7 HashMap源码分析

开发技术 开发技术 4周前 (09-01) 29次浏览

本文是作者原创,版权归作者所有.若要转载,请注明出处.

话不多说,开始吧! 

我们知道,JDK1.7中  HashMap 采用的数据结构 = 数组 + 单链表

链表Entry

JDK1.7 HashMap源码分析

 

 

HashMap的常用属性

JDK1.7 HashMap源码分析

 

 

HashMap的构造方法

JDK1.7 HashMap源码分析

 

 

put方法(主)

JDK1.7 HashMap源码分析

 

 1.初始化

JDK1.7 HashMap源码分析

 

 1-1 将传入的容量转化为>传入容量大小的最小的2的次幂(详见位运算那篇文章)

JDK1.7 HashMap源码分析

 

 

2.key=null的处理(addEntry方法后面再说)

JDK1.7 HashMap源码分析

3.根据key计算hash值

JDK1.7 HashMap源码分析

 

 

4.根据hash值 获得 key在应存放的数组Table中位置

JDK1.7 HashMap源码分析

 

 

5.遍历该数组元素为头结点的链表,逐个判断该key对应的值是否已存在

JDK1.7 HashMap源码分析

 

 

6.添加一个元素

JDK1.7 HashMap源码分析

 

 

6-1.先判断容量是否足够,若容量不足,则进行扩容(2倍)

JDK1.7 HashMap源码分析

 

 

6-1-1.将旧数组上的键值对转移到新table中,从而完成扩容

JDK1.7 HashMap源码分析

 

 

6-2.添加一个新的元素到数组

JDK1.7 HashMap源码分析

 

 

get方法

JDK1.7 HashMap源码分析

 

 

1.key为null

JDK1.7 HashMap源码分析

 

 

2.key为其他元素

JDK1.7 HashMap源码分析

 

 

remove方法

JDK1.7 HashMap源码分析

 

细节如下:

 JDK1.7 HashMap源码分析

 

 

至此,JDK1.7 HashMap源码分析,感谢观看



程序员灯塔 , 版权所有
转载请注明原文链接:https://www.wangt.cc/2020/09/jdk1-7-hashmap%e6%ba%90%e7%a0%81%e5%88%86%e6%9e%90/
喜欢 (0)