HashMap 数据结构
Jdk1.8之前:数组+链表
Jdk 1.8之后 数组+链表+红黑书
链表长度大于8后并且数组长度 大于64 链表结构转化成红黑树结构
为什么jdk8之后要用红黑树
因为链表插入快,查询慢,当链表太长时,
相当于 node.next.next.next.next.next.next.next.next …… = new Node(xx)
其中next就相当于插入,而红黑数可以通过左旋右旋的方式减少查找深度
Hash算法
Hash算法也叫散列算法,就是把任意长度值(Key)通过散列算法变幻成固定长度的key值,通过这个地址进行访问的数据结构。它通过把关键码值映射到表中的一个位置来访问记录,达到加快查找的速度。这个映射函数叫散列函数,存放记录的数组叫散列表。
put方法图解
链表存储说明
以下代码是hashmap在put数据时摘抄的一部分逻辑
// 当产生hash碰撞的情况下的一部分处理逻辑
for (in