美文网首页
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

相关文章

  • 2020-04-03 Java HashMap的实现原理的文章

    HashMap的扩容机制---resize() HashMap底层实现原理 扩容机制 Java中HashMap的实现原理

  • HashMap原理

    本文参考: HashMap的扩容机制---resize()HashMap的扩容及树化过程 HashMap的内部是使...

  • HashMap 的扩容机制

    每个 Java 程序员都得了解 HashMap 的扩容机制美团一面:说说 HashMap 的扩容机制吧看完这篇,如...

  • HashMap知识

    HashMap的扩容机制---resize() - 割肉机 - 博客园 Java源码分析:HashMap 1.8 ...

  • HashMap 扩容机制

    data:2016-10-3 8:54 HashMap 执行原理 内部采用数组与链表的结合形式。 当p...

  • HashMap扩容机制

    HashMap如何扩容的 HashMap里面数据存储数量=threshold,而threshold是由tableS...

  • HashMap扩容机制

    介绍一下几个名词:容量:capacity ,默认16。加载因子:loadFactor,默认是0.75阈值:thre...

  • HashMap的扩容机制:JDK1.7,JDK1.8

    HashMap的扩容机制:JDK1.7,JDK1.8 - cosmos_lee - CSDN博客HashMap的扩...

  • HashMap源码解析 (HashMap类-resize方法)

    扩容方法 resize( ) 扩容机制: 什么时候才需要扩容当 HashMap 中的元素个数超过数组大小(数组长度...

  • 近期学习安排

    一、Java基础篇 1.HashMap底层数据结构,扩容机制 2.ArrayList 底层数据结构,扩容机制 3....

网友评论

      本文标题:HashMap扩容机制

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