莫忘i 2019-10-14 22:15 采纳率: 0%
浏览 217

ConcurrentHashMap中内部类Segment中的count和threshold

图片说明
当Segment初始化的时候闯将HashEntry数组时,大小为cap,threshold也为扩容系数*数组的大小,我的理解是根据数组实例化的个数是否大于threshold来判断是否扩容的。而在Segment类中的put方法中,明显的是判断tab中元素的个数(包括链表上的元素)和threshold比较的呢?,求解答图片说明

  • 写回答

1条回答 默认 最新

  • 张彦峰ZYF Java领域优质创作者 2024-04-13 20:47
    关注

    在put方法中,确实是判断当前Segment中元素的个数(包括链表上的元素)是否超过了threshold来判断是否需要进行扩容。这是因为:虽然数组的大小cap是固定的,但是数组中的每个位置可以存储多个键值对,因为存在链表结构解决哈希冲突。因此,实际存储的元素个数不仅仅取决于数组的大小,还取决于每个位置上链表的长度。所以在判断是否需要扩容时,需要考虑到实际存储的元素个数,而不仅仅是数组的大小。

    评论

报告相同问题?

悬赏问题

  • ¥20 基于MSP430f5529的MPU6050驱动,求出欧拉角
  • ¥20 Java-Oj-桌布的计算
  • ¥15 powerbuilder中的datawindow数据整合到新的DataWindow
  • ¥20 有人知道这种图怎么画吗?
  • ¥15 pyqt6如何引用qrc文件加载里面的的资源
  • ¥15 安卓JNI项目使用lua上的问题
  • ¥20 RL+GNN解决人员排班问题时梯度消失
  • ¥60 要数控稳压电源测试数据
  • ¥15 能帮我写下这个编程吗
  • ¥15 ikuai客户端l2tp协议链接报终止15信号和无法将p.p.p6转换为我的l2tp线路