1.hashMap概念:

(不准确,先大致理解概念)

hashmap会创建一个默认为16个槽位的数组(hash table也叫作hash表),这个数组中的每个都由一定的数据结构,本质上他也是一个节点,这个节点包含了hash,key,value,next这四个部分;hash决定了我们往哪个槽位添加值。

hash算***得到一个值,比如对16取余;通过拿到key值并使用hash算法得到一个int类型的值:1.如果槽中没有值直接存储,如果有值了,那么就产生了hash碰撞。这时会创建一个链表用于存储,也就是在产生相同槽位的数组位置出创建一个链表,会比较key。这里的链表的长度最多为8。当超出了8以后,那么就会变为红黑树,存储。

(变为红黑树的原因在于兼顾查找与插入的效率),变为红黑树后节点会产生膨胀,节点中会保存其余的属性值。