我不含糖 2022-08-10 16:58 采纳率: 0%
浏览 29

HashMap扩容机制问题

#HashMap扩容机制问题
我们常见的文章博客和看的大多数视频都说了HashMap扩容机制问题,但是我这里有几个小的疑问?
第一个:当我初始化HashMap并且放入了第一个元素后,那么HashMap就被初始化为16的大小。那么如果我后续放入的8个元素经过hash算法都放入下标为1的位置上(假设第一次put的元素在下标为0的位置上),这个时候我再插入4个元素(这4个元素随机分配)。那么这种情况下会触发扩容吗?
我看的文章都说数组使用量大于16*0.75即12个的时候就进行扩容,文章所说的扩容条件是只是单纯的数组使用超过12,还是数组加上链表的元素超过12呢?
第二个:以我所看的文章和视频教会给我的东西是:当数组长度没有达到扩容条件,但是某个下标的链表长度达到了8及以上,那么就会优先进行扩容,然后重新hash。真实情况是这样吗?

  • 写回答

3条回答 默认 最新

  • yedelzx 2022-08-10 17:29
    关注

    去看hashMap里面的puVal方法,最后几行的代码,扩容其实是根据size变量来的,但这个size变量并不是只在没有哈希冲突的时候才会增加。

    评论

报告相同问题?

问题事件

  • 创建了问题 8月10日

悬赏问题

  • ¥15 有关类的报错,在模块里调用另一个模块的方法下的变量时出错
  • ¥15 delphi7 HMAC_SHA256方式加密
  • ¥15 关于#qt#的问题:我想实现qcustomplot完成坐标轴
  • ¥15 下列c语言代码为何输出了多余的空格
  • ¥15 kali linux用wget archive.kali.org/archive-key.asc指令下载签名无效(失败)
  • ¥15 openHarmony 利用c++程序在dayu210开发板上实现拉取RTSP视频流并且在屏幕上显示
  • ¥15 GD32H757的can通信配置
  • ¥20 nist随机数测试的问题
  • ¥20 帮我解决这个项目,thank you各位程序员
  • ¥15 哪位能用ea软件做一下,有偿