qq_36019101 2018-03-17 02:25 采纳率: 0%
浏览 2854
已结题

HashMap一个桶大约放多少个Entry节点

当map中包含的Entry的数量大于等于threshold =初始容量*装载因子(默认0.75) 的时候,且新建的Entry刚好落在一个非空的桶上,此刻触发扩容机制,将其容量扩大为2倍.
也就是说如果桶初始大小为100,当Entry节点达到75个,且新建的Entry刚好落在一个非空的桶上就会扩容。那一个桶就挂一个Entry?

  • 写回答

2条回答

  • 红帽01 2018-03-17 02:51
    关注

    参考一下

    http://blog.csdn.net/ghsau/article/details/16890151

    HashMap默认初始容量16,加载因子0.75,也就是说最多能放16*0.75=12个元素,当put第13个时,HashMap将发生rehash,rehash的一系列处理比较影响性能,所以当我们需要向HashMap存放较多元素时,最好指定合适的初始容量和加载因子,否则HashMap默认只能存12个元素,将会发生多次rehash操作。

    rehash的解释:
    在创建hashMAP的时候可以设置来个参数,一般默认
    初始化容量:创建hash表时桶的数量
    负载因子:负载因子=map的size/初始化容量
    当hash表中的负载因子达到负载极限的时候,hash表会自动成倍的增加容量(桶的数量),并将原有的对象
    重新的分配并加入新的桶内,这称为rehash。这个过程是十分好性能的,一般不要
    一般建议设置比较大的初始化容量,防止rehash,但是也不能设置过大,初始化容量过大 浪费空间

    评论

报告相同问题?

悬赏问题

  • ¥50 如何用脚本实现输入法的热键设置
  • ¥20 我想使用一些网络协议或者部分协议也行,主要想实现类似于traceroute的一定步长内的路由拓扑功能
  • ¥30 深度学习,前后端连接
  • ¥15 孟德尔随机化结果不一致
  • ¥15 apm2.8飞控罗盘bad health,加速度计校准失败
  • ¥15 求解O-S方程的特征值问题给出边界层布拉休斯平行流的中性曲线
  • ¥15 谁有desed数据集呀
  • ¥20 手写数字识别运行c仿真时,程序报错错误代码sim211-100
  • ¥15 关于#hadoop#的问题
  • ¥15 (标签-Python|关键词-socket)