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