您当前的位置:首页 > 电脑百科 > 程序开发 > 编程百科

HashMap是否设置初始化容量

时间:2021-06-08 09:18:44  来源:今日头条  作者:newstarylz
HashMap是否设置初始化容量

 

1、HashMap主要成员变量

size 记录了 Map 中 KV 对的个数。

loadFactor 装载印子,用来衡量 HashMap 满的程度。loadFactor 的默认值为 0.75f。

threshold 临界值,当实际 KV 个数超过 threshold 时,HashMap 会将容量扩容(threshold =容量 * 加载因子)。

capacity 容量,如果不指定,默认容量是 16。

 

2、HashMap 的扩容机制

HashMap 的扩容条件就是当 HashMap 中的元素个数(size)超过临界值(threshold)时就会自动扩容,从 16 扩容到 32、64、128……。在 HashMap 中,threshold = loadFactor * capacity。

 

3、是否设置初始化容量

在已知 HashMap 中将要存放的 KV 个数的时候,设置一个合理的初始化容量可以有效的提高性能,为啥呢?

如果我们没有设置初始容量大小,随着元素的不断增加,HashMap 会发生多次扩容,而HashMap 中的扩容机制决定了每次扩容都需要重建 hash 表,是非常影响性能的。

 

4、初始值设置多少

我们可以认为,当我们明确知道 HashMap 中元素的个数的时候,把默认容量设置成expectedSize / 0.75F + 1.0F 是一个在性能上相对好的选择,但是,同时也会牺牲些内存

 

5、总结

以上的操作是一种用内存换性能的做法,真正使用的时候,要考虑到内存的影响。但是,大多数情况下,我们还是认为内存是一种比较富裕的资源。

其实,有时候就算不设置初始值,也没有那么大的影响,甚至是无法感知这些影响的。

但是,大的性能优化,不就是一个一个的优化细节堆叠出来的吗?



Tags:HashMap   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
1、HashMap主要成员变量size 记录了 Map 中 KV 对的个数。loadFactor 装载印子,用来衡量 HashMap 满的程度。loadFactor 的默认值为 0.75f。threshold 临界值,当实际 KV 个数...【详细内容】
2021-06-08  Tags: HashMap  点击:(152)  评论:(0)  加入收藏
场景描述我们在日常学习和研发中,经常会接触一些底层的源码,有些同学在遇到位运算(提高系统的运行效率)实现的方法时,读起来就有些吃力了,例如HashMap类中的tableSizeFor(int cap...【详细内容】
2021-04-06  Tags: HashMap  点击:(247)  评论:(0)  加入收藏
前言本文咱们了解一下红黑树的设计,相比 jdk1.7 的 HashMap 而言,jdk1.8 最重要的就是引入了红黑树的设计,当冲突的链表长度超过 8 个的时候,链表结构就会转为红黑树结构。01、...【详细内容】
2021-01-18  Tags: HashMap  点击:(173)  评论:(0)  加入收藏
本节让我们一起研究一下该容器是如何在保证线程安全的同时又能保证高效的操作。 ConcurrentHashMap 是线程安全且高效的 HashMap 。...【详细内容】
2020-10-16  Tags: HashMap  点击:(79)  评论:(0)  加入收藏
絮叨学校短学期刚结束了,离学校开学还有很多天,一直呆在寝室玩游戏岂不是浪费了大好时光,于是心血来潮想看看HashMap的源码。虽然我没有经历过面试,但是java程序员都知道,HashMap...【详细内容】
2020-09-27  Tags: HashMap  点击:(59)  评论:(0)  加入收藏
一、前言得益于Doug Lea老爷子的操刀,让HashMap成为使用和面试最频繁的API,没办法设计的太优秀了!HashMap 最早出现在 JDK 1.2中,底层基于散列算法实现。HashMap 允许 null 键和...【详细内容】
2020-08-11  Tags: HashMap  点击:(46)  评论:(0)  加入收藏
TL:DR他们将键映射到值。哈希映射可能是映射概念最常用的实现。 它们允许将任意对象与其他任意对象关联。这对于执行诸如通过某些公共属性将数据分组或连接在一起之类的工作...【详细内容】
2020-07-19  Tags: HashMap  点击:(69)  评论:(0)  加入收藏
jdk1.7中的底层实现过程(底层基于数组+链表)在我们new HashMap()时,底层创建了默认长度为16的一维数组Entry[ ] table。当我们调用map.put(key1,value1)方法向HashMap里添加数...【详细内容】
2020-06-28  Tags: HashMap  点击:(40)  评论:(0)  加入收藏
通过Map.values()遍历所有的value,不能遍历key public class TestDemo{ public static void main(String[] args) { HashMap<String,String> hashMap = new Has...【详细内容】
2020-03-08  Tags: HashMap  点击:(47)  评论:(0)  加入收藏
HashMap是数组+链表实现的,既然用到hash散列,那么肯定不可避免的会出现冲突问题,HashMap解决冲突的方法是拉链法,因为这里有用到数组,那么当容量不足的时候就需要进行扩容操作了...【详细内容】
2019-10-24  Tags: HashMap  点击:(116)  评论:(0)  加入收藏
▌简易百科推荐
摘 要 (OF作品展示)OF之前介绍了用python实现数据可视化、数据分析及一些小项目,但基本都是后端的知识。想要做一个好看的可视化大屏,我们还要学一些前端的知识(vue),网上有很多比...【详细内容】
2021-12-27  项目与数据管理    Tags:Vue   点击:(1)  评论:(0)  加入收藏
程序是如何被执行的&emsp;&emsp;程序是如何被执行的?许多开发者可能也没法回答这个问题,大多数人更注重的是如何编写程序,却不会太注意编写好的程序是如何被运行,这并不是一个好...【详细内容】
2021-12-23  IT学习日记    Tags:程序   点击:(9)  评论:(0)  加入收藏
阅读收获✔️1. 了解单点登录实现原理✔️2. 掌握快速使用xxl-sso接入单点登录功能一、早期的多系统登录解决方案 单系统登录解决方案的核心是cookie,cookie携带会话id在浏览器...【详细内容】
2021-12-23  程序yuan    Tags:单点登录(   点击:(8)  评论:(0)  加入收藏
下载Eclipse RCP IDE如果你电脑上还没有安装Eclipse,那么请到这里下载对应版本的软件进行安装。具体的安装步骤就不在这赘述了。创建第一个标准Eclipse RCP应用(总共分为六步)1...【详细内容】
2021-12-22  阿福ChrisYuan    Tags:RCP应用   点击:(7)  评论:(0)  加入收藏
今天想简单聊一聊 Token 的 Value Capture,就是币的价值问题。首先说明啊,这个话题包含的内容非常之光,Token 的经济学设计也可以包含诸多问题,所以几乎不可能把这个问题说的清...【详细内容】
2021-12-21  唐少华TSH    Tags:Token   点击:(9)  评论:(0)  加入收藏
实现效果:假如有10条数据,分组展示,默认在当前页面展示4个,点击换一批,从第5个开始继续展示,到最后一组,再重新返回到第一组 data() { return { qList: [], //处理后...【详细内容】
2021-12-17  Mason程    Tags:VUE   点击:(14)  评论:(0)  加入收藏
什么是性能调优?(what) 为什么需要性能调优?(why) 什么时候需要性能调优?(when) 什么地方需要性能调优?(where) 什么时候来进行性能调优?(who) 怎么样进行性能调优?(How) 硬件配...【详细内容】
2021-12-16  软件测试小p    Tags:性能调优   点击:(19)  评论:(0)  加入收藏
Tasker 是一款适用于 Android 设备的高级自动化应用,它可以通过脚本让重复性的操作自动运行,提高效率。 不知道从哪里听说的抖音 app 会导致 OLED 屏幕烧屏。于是就现学现卖,自...【详细内容】
2021-12-15  ITBang    Tags:抖音防烧屏   点击:(23)  评论:(0)  加入收藏
11 月 23 日,Rust Moderation Team(审核团队)在 GitHub 上发布了辞职公告,即刻生效。根据公告,审核团队集体辞职是为了抗议 Rust 核心团队(Core team)在执行社区行为准则和标准上...【详细内容】
2021-12-15  InfoQ    Tags:Rust   点击:(24)  评论:(0)  加入收藏
一个项目的大部分API,测试用例在参数和参数值等信息会有很多相似的地方。我们可以复制API,复制用例来快速生成,然后做细微调整既可以满足我们的测试需求1.复制API:在菜单发布单...【详细内容】
2021-12-14  AutoMeter    Tags:AutoMeter   点击:(20)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条