莫忘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是固定的,但是数组中的每个位置可以存储多个键值对,因为存在链表结构解决哈希冲突。因此,实际存储的元素个数不仅仅取决于数组的大小,还取决于每个位置上链表的长度。所以在判断是否需要扩容时,需要考虑到实际存储的元素个数,而不仅仅是数组的大小。

    评论

报告相同问题?

悬赏问题

  • ¥15 关于#hadoop#的问题
  • ¥15 (标签-Python|关键词-socket)
  • ¥15 keil里为什么main.c定义的函数在it.c调用不了
  • ¥50 切换TabTip键盘的输入法
  • ¥15 可否在不同线程中调用封装数据库操作的类
  • ¥15 微带串馈天线阵列每个阵元宽度计算
  • ¥15 keil的map文件中Image component sizes各项意思
  • ¥20 求个正点原子stm32f407开发版的贪吃蛇游戏
  • ¥15 划分vlan后,链路不通了?
  • ¥20 求各位懂行的人,注册表能不能看到usb使用得具体信息,干了什么,传输了什么数据