JDK1.7 HashMap源码分析
本文是作者原创,版权归作者所有.若要转载,请注明出处.
话不多说,开始吧!
我们知道,JDK1.7中 HashMap 采用的数据结构 = 数组 + 单链表
链表Entry
HashMap的常用属性
HashMap的构造方法
put方法(主)
1.初始化
1-1 将传入的容量转化为>传入容量大小的最小的2的次幂(详见位运算那篇文章)
2.key=null的处理(addEntry方法后面再说)
3.根据key计算hash值
4.根据hash值 获得 key在应存放的数组Table中位置
5.遍历该数组元素为头结点的链表,逐个判断该key对应的值是否已存在
6.添加一个元素
6-1.先判断容量是否足够,若容量不足,则进行扩容(2倍)
6-1-1.将旧数组上的键值对转移到新table中,从而完成扩容
6-2.添加一个新的元素到数组
get方法
1.key为null
2.key为其他元素
remove方法
细节如下:
至此,JDK1.7 HashMap源码分析,感谢观看