HashMap的扩容机制是怎样的?
- 什么条件下扩容?
- HashMap中最主要的数据结构是数组,一般情况下HashMap的元素是方数组上的。如果数组已经有元素,那么就发生了Hash 冲突,那么就会使用链表或红黑树的结构进行存储。
- 当然HashMap 中数组的默认大小是16,如果不断的插入元素,那么Hash冲突就会很频繁,所以这个时候就需要扩容!
- HashMap 中有一个loadFactor参数,这个是当插入数组的元素数量达到了数组的比例之后,HashMap就要开始把数组进行扩容,扩成原来的2倍。
- loadFactor默认值0.75,例如:数组长度是16,如果数组上已经有12个元素(16*0.75〉时,这个时候就需要进行扩容
- 扩容会发生什么?
- 当然扩容后原有的元素也需要进行重新散列,因为数组长度变长了,元素在数组上的位置也可能发生变化。