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源码分析,感谢观看


原文地址:https://www.cnblogs.com/lusaisai/p/13599400.html