2021-01-18:java中,HashMap的创建流程是什么?

举报
福大大架构师每日一题 发表于 2021/01/18 21:17:37 2021/01/18
【摘要】 福哥答案2021-01-18:jdk1.7创建流程:三种构造器。1.初始容量不能为负数,默认16。2.初始容量大于最大容量时,初始容量等于最大容量。3.负载因子必须大于0,默认0.75。4.根据初始容量算出容量,容量是2的n次幂。5.设置负载因子loadFactor 。6.设置容量极限threshold。7.设置table数组。8.调用init()空方法。参数为集合的构造器。1.调用有两个参...

福哥答案2021-01-18:

jdk1.7创建流程:
三种构造器。
1.初始容量不能为负数,默认16。
2.初始容量大于最大容量时,初始容量等于最大容量。
3.负载因子必须大于0,默认0.75。
4.根据初始容量算出容量,容量是2的n次幂。
5.设置负载因子loadFactor 。
6.设置容量极限threshold。
7.设置table数组。实在抱歉,这个地方弄错了,没有第7步,2021-01-21修改。
8.调用init()空方法。

参数为集合的构造器。
1.调用有两个参数的构造器。
2.inflateTable方法。初始化table数组。
3.putAllForCreate方法。遍历参数,放入当前map。

jdk1.8创建流程:
两种构造器。
1.初始容量不能为负数,默认16。
2.初始容量大于最大容量时,初始容量等于最大容量。
3.负载因子必须大于0,默认0.75。
4.设置负载因子loadFactor 。
5.设置容量极限threshold,调用tableSizeFor方法,大于initialCapacity的最小的二次幂数值 。。

无参构造器。
1.只设置了负载因子,其他什么都没做。

参数为集合的构造器。
1.设置负载因子。
2.putMapEntries方法。遍历参数,放入当前map。
***
[HashMap源码分析(jdk7)](https://www.cnblogs.com/fsmly/p/11278561.html)
[JDK1.8中的HashMap实现](https://www.cnblogs.com/doufuyu/p/10874689.html)
[评论](https://user.qzone.qq.com/3182319461/blog/1610924590)

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。