彻底搞懂hashMap底层原理

一、说明

hashMap在java1.7和java1.8版本中有做一些调整,我们本篇只说java1.7的hashMap。

二、数据结构

hashMap的数据结构是由数组和链表组成,table是一个存放Entry对象的数组,每个Entry对象由4个属性组成,分别是key、value、next、hash,key和value是我们熟知的键值对,不需要过多解释,next是当前元素在链表中指向下一个元素的引用,hash是计算出来的hashcode,hashMap中的hsah是通过对key.hashcode()进行一定操作得出的,并不是直接使用key.hashcode()方法计算数来的值。

三、属性信息

先来了解下hashMap中一些重要的属性:

//Hashmap的初始化大小,初始化的值为16,1往右移4位为16
static final int DEFAULT_INITIAL_CAPACITY = 1