美文网首页
HashMap扩容机制

HashMap扩容机制

作者: MIRROR1217 | 来源:发表于2019-11-12 16:17 被阅读0次

    HashMap如何扩容的

    HashMap里面数据存储数量=threshold,而threshold是由tableSizeFor()处理得到的,也就是threshold的值必须是2的平方。

    简单举例来说

    • HashMap 初始容量指定为 1000,会被tableSizeFor()调整为 1024,但是它只是表示table数组为 1024,扩容的重要依据扩容阈值会在 resize()中调整为 768(1024 * 0.75),所以会触发扩容;
    • 当想用 HashMap 存放 1w 条数据时,实际上经过 tableSizeFor() 方法处理之后,就会变成 2 的 14 次幂 16384,再算上负载因子 0.75f,实际在不触发扩容的前提下,可存储的数据容量是 12288(16384 * 0.75f),所以不会触发扩容。

    所以简单来说,想要不触发扩容机制,最安全的做法是将初始值除以0.75;


    很简单对吧!
    (感谢:https://www.jianshu.com/p/299e76a7dac1

    相关文章

      网友评论

          本文标题:HashMap扩容机制

          本文链接:https://www.haomeiwen.com/subject/worqictx.html