hashmap的一些基础原理

Posted wengshuhang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了hashmap的一些基础原理相关的知识,希望对你有一定的参考价值。

关于浏览hashmap基础原理之后的一些汇总:
1、在JDK8及以后的版本中,HashMap引入了红黑树结构,其底层的数据结构变成了数组+链表或数组+红黑树。添加元素时,若桶中链表个数超过8,链表会转换成红黑树
技术分享图片

具体原理为什么是8呢:泊松分布、概率学问题
2、红黑树,来源于二叉查找树,但是当二叉查找树最坏的情况会变成链表,所以引入红黑色的概念,而红黑树在插入跟删除时候主要数据的操作排列方式是左旋或者右旋,红黑树的查询时间复杂度是O(log N)
3、hashmap的初始容量是16,加载因子是0.75(泊松分布),当数据容量为16*0.75=12时,会进行数据的扩容,扩容是翻倍=32,但是还有一种扩容的情况,就是当数据大于8时候由链表转为树形存储时候,当检测到容量小于64时候,会进行扩容,因为数据过长原因还是由于空间不足。





以上是关于hashmap的一些基础原理的主要内容,如果未能解决你的问题,请参考以下文章

Java基础——HashMap设计原理&实现分析

Java基础——HashMap设计原理&实现分析

基础进阶之HashMap实现原理分析

腾讯基础面

HashMap的工作原理

HashMap的工作原理