深入理解HashMap与Hash算法
- HashMap的数据结构
- JDK1.7及之前HashMap底层是数组和链表
- JDK1.8及以后HashMap底层是数组和链表以及红黑树
- JDK1.8什么时候链表会转化成红黑树?
HashMap在元素比较少的时候,也只会有数组+链表的结构。当链表的长度大于8,HashMap可能会做树化(链表转变成红黑树),不过就是需要再满足一个条件,就是数组长度必须大于等手64)(默认是16经过两次扩容<*2>),链表才会转变为红黑树。否则,只会触发数组的扩容。 - 为什么HashMap要把hashcode做一个运算改进?
- 让计算出来的数组下标更加分散