HashMap原理

HashMap

Posted by 杨一 on 2020-03-26

HashMap底层原理

特点

  1. 快速存储
  2. 快速查找 时间复杂度O(1)
  3. 可伸缩

数据结构

  1. HashMap 默认是16长度。
  2. hash冲突:不同的对象算出来的数组下标相同。
  3. 存储结构为:数组、链表、红黑树(Jdk1.8),当解决hash冲突的单向列表长度到达8时,采用红黑树存储。
  4. hash算法:任何对象都有hashcode,hash值=hashCode^(hashCode>>>16),当右移16位后再与自己做异或运算。
  5. 数组下标:hashCode&(16-1)=hash%16 。
  6. HashMap扩容:到达3/4时 自动扩容2倍(16*2)。