HashMap底层原理

HashMap的底层原理

HashMap的7和8的对比

比较项 jdk7 jdk8
底层结构 数组加链表 数组加链表加红黑树
put的时候的差别 链表添加使用头插法 链表添加使用尾插法
数组的定义 entry<> bucket<> node<>

红黑树了解

  • 根节点是黑色的
  • 红节点的子节点必须是黑色
  • 叶子节点都是黑色的
  • 接近平衡二叉树

put流程

  1. 根据key计算出hash码,然后散列到数组的某个位置上
  2. 判断这个位置上是否为空,如果为空的话就直接插入
  3. 如果不为空的话,通过equals方法比较之前的key
  4. 如果相等的话,那么就是覆盖
  5. 如果不相等的话就可以插入
原文地址:https://www.cnblogs.com/bigdig/p/13896673.html