目录
HashMap的实现原理
在JDK1.7版本之前,HashMap数据结构是数组和链表,HashMap通过哈希算法将元素的键映射到数组中。如果多个键映射到数组同一个位置,它们会以链表的形式进行存储,应为链表的查询时间为o(n),链表长的时候,效率就低了。
所有在JDK1.8后,当一个的链表长度超过8的时候就转为红黑树,查找时间为O(logn),提高了查询效率
HashMap的put(key,val)
计算hash从而得到索引位置。进一步存储。HashMap会根据数组的占用情况自动调整容量(超过就resize为原来的两倍)
HashMap的扩容机制
HashMap默认的负载因子为0.75,即如果HashMap中的元素个数超过总容量的75%,就会扩容
- 第一步对哈希表长度的扩展(2倍)
- 第二步将旧哈希表中的数据放到新的哈希表中