为了账号安全,请及时绑定邮箱和手机立即绑定

了解 HashMap#resize 函数细节

了解 HashMap#resize 函数细节

HUWWW 2023-09-06 16:16:17
的关键点resize是重新计算newCap和newThr。然而,在源代码中,有两种不同的计算方式newThr。首先,当oldCap > DEFAULT_INITIAL_CAPACITY && oldCap < MAXIMUM_CAPACITY && newCap = < MAXIMUM_CAPACITY发生时,它使用:// double the old thresholdnewThr = oldThr << 1; 第二// newCap * load factornewThr = (newCap < MAXIMUM_CAPACITY && ft < (float)MAXIMUM_CAPACITY ?                  (int)ft : Integer.MAX_VALUE);为什么我们需要两种不同的方法?第一个条件是什么意思?
查看完整描述

1 回答

?
泛舟湖上清波郎朗

TA贡献1818条经验 获得超3个赞

本质上,如果旧阈值非零,则新阈值将设置为其大小的两倍。否则,如果旧阈值为零(无论这意味着什么,在代码摘录中不可见),我们需要其他方法来计算新阈值,因此我们进行第二次计算。就那么简单?



查看完整回答
反对 回复 2023-09-06
  • 1 回答
  • 0 关注
  • 67 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信