博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
「每天一道面试题」HashMap默认加载因子为什么选择0.75?
阅读量:7158 次
发布时间:2019-06-29

本文共 467 字,大约阅读时间需要 1 分钟。

「每天一道面试题」HashMap默认加载因子为什么选择0.75?

HashMap有两个参数影响其性能:初始容量和加载因子。容量是哈希表中桶的数量,初始容量只是哈希表在创建时的容量。加载因子是哈希表在其容量自动扩容之前可以达到多满的一种度量。当哈希表中的条目数超出了加载因子与当前容量的乘积时,则要对该哈希表进行扩容、rehash操作(即重建内部数据结构),扩容后的哈希表将具有两倍的原容量。

通常,加载因子需要在时间和空间成本上寻求一种折衷。加载因子过高,例如为1,虽然减少了空间开销,提高了空间利用率,但同时也增加了查询时间成本;加载因子过低,例如0.5,虽然可以减少查询时间成本,但是空间利用率很低,同时提高了rehash操作的次数。在设置初始容量时应该考虑到映射中所需的条目数及其加载因子,以便最大限度地减少rehash操作次数,所以,一般在使用HashMap时建议根据预估值设置初始容量,减少扩容操作。

选择0.75作为默认的加载因子,完全是时间和空间成本上寻求的一种折衷选择,至于为什么不选择0.5或0.8,笔者没有找到官方的直接说明,在HashMap的源码注释中也只是说是一种折中的选择。

转载地址:http://yqegl.baihongyu.com/

你可能感兴趣的文章
【数据结构第四周】树知识点整理(下)【平衡二叉树】
查看>>
zabbix监控windows服务器CPU温度
查看>>
2_2 递归与分治策略(分治法的基本思想)
查看>>
C++Singleton的DCLP(双重锁)实现以及性能测评
查看>>
Cocos2d-x 内存管理原则
查看>>
android CheckBox与监听
查看>>
snmpwalk的报文检测
查看>>
mysql数据库中char和varchar类型比较
查看>>
Webform Repeater的灵活运用
查看>>
深浅拷贝
查看>>
Django的序列化_通过ajax方式
查看>>
浅析tnsping
查看>>
215.Spring Boot+Spring Security:初体验
查看>>
js数组操作记录
查看>>
SQL 语句 写法
查看>>
【个人笔记】CLR Via C# 第一章 CLR执行模型
查看>>
Mysql中将查询出来的多列的值用逗号拼接
查看>>
字节序和网络字节序【转】
查看>>
有关UnrealEngine材质编辑器中的Custom节点的一些小贴士
查看>>
Ue4全景图制作设想
查看>>