这篇文章将为大家详细讲解有关如何进行HashMap源码分析,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。
创新互联是一家专注于成都网站建设、网站设计和绵阳电信机房的网络公司,有着丰富的建站经验和案例。
代码基于JDK 1.8
Map是保存了Key-Value键值对的数据集合接口。HashMap是基于HashCode的Map实现。因为基于Key的HashCode进行存储,所以HashMap中Key都是唯一的。
HashMap中Key,Value均可以为null。
|
|
Map
- AbstractMap
本身实现了Map
接口,在这里再次强调了HashMap
实现了Map
Cloneable
实现了克隆接口
Serializable
实现了序列化接口
|
|
上面代码描述了HashMap
的底层数据结构:数组
+ 链表
。
在1.8中,增加了红黑树,带详细研究…
对于构造函数,提供了多个重载,以方便创建实例:
|
|
在构造函数中,initialCapacity
和loadFactor
两个参数对map的性能有很大的影响。
initialCapacity
: 初始化大小, 即table
数组的长度,如果此值太小,可能会因引起table
频繁调整数组大小,如果太大,实际内容很少,则造成资源浪费,默认 1 << 4。
loadFactor
: 加载因子,取值范围(0,1)的浮点数,如果此值太小,可能会因引起table
频繁调整数组大小,如果太大,table
大小很长时间不调整,调整时内容移动大。默认值0.75
|
|
计算key在table中的索引,h为key的hashcode,n为当前table的大小。
HashMap为非线程安全Map,其中key和value均可以为null。
关于如何进行HashMap源码分析就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。