HashMap在我们的工作中应用的非常广泛,在工作面试中也经常会被问到,对于这样一个重要的集合模型我们有必要弄清楚它的使用方法和它底层的实现原理。HashMap是通过key-value键值对的方式来存储数据的,通过put、get方法实现键值对的快速存取,这是HashMap最基本的用法。HashMap底层是通过数组和链表相结合的混合结构来存放数据的。我们通过分析底层源码来详细了解一下HashMap的实现原理。

      1、HashMap的初始化

      在HashMap实例化时我们要了解两个概念:初始容量和加载因子。HashMap是基于哈希表的Map接口实现,初始容量是哈希表在创建时的容量。加载因子是哈希表在其容量自动增加之前可以达到多满的一种尺度。当哈希表中的条目数超过了加载因子与当前容量的乘积时,则要对该哈希表进行rehash操作(即重建内部数据结构),从而哈希表将具有大约两倍于当前容量的新的容量。

       photoshop培训,电脑培训,电脑维修培训,移动软件开发培训,网站设计培训,网站建设培训

       以上是Java API中HashMap的构造方法,其源码如下:

       

photoshop培训,电脑培训,电脑维修培训,移动软件开发培训,网站设计培训,网站建设培训

 1 static final int DEFAULT_INITIAL_CAPACITY = 16;//默认初始容量16 2 static final int MAXIMUM_CAPACITY = 1 << 30;//定义最大容量 3 static final float DEFAULT_LOAD_FACTOR = 0.75f;//默认负载因子0.75 4&n