HashMap底层原理
HashMap的底层原理
HashMap的7和8的对比
比较项 | jdk7 | jdk8 |
---|---|---|
底层结构 | 数组加链表 | 数组加链表加红黑树 |
put的时候的差别 | 链表添加使用头插法 | 链表添加使用尾插法 |
数组的定义 | entry<> | bucket<> node<> |
红黑树了解
- 根节点是黑色的
- 红节点的子节点必须是黑色
- 叶子节点都是黑色的
- 接近平衡二叉树
put流程
- 根据key计算出hash码,然后散列到数组的某个位置上
- 判断这个位置上是否为空,如果为空的话就直接插入
- 如果不为空的话,通过equals方法比较之前的key
- 如果相等的话,那么就是覆盖
- 如果不相等的话就可以插入