【发布时间】:2016-04-20 16:10:43
【问题描述】:
我对 Java HashMap 类毫无疑问。据我了解
transient Entry[] table;
表格数组将根据hashCode() 的值保存数据。我需要知道这个数组什么时候被初始化。数组长度是基于我们在HashMap初始化时定义的容量还是调用构造函数时没有定义的默认容量16?
哈希码如何缩放到数组索引?比如hashcode值很大,怎么缩放到10、20这样的数组索引?
我读过,当达到阈值时,会发生重新散列。例如,在默认情况下,当容量为 16,负载因子为 0.75 时,则阈值为16*0.75=12。一旦添加了 12 个项目,就会发生重新散列并且容量将增加。这是否意味着table 数组大小增加了?
【问题讨论】: