hashmap 的加载因子的默认值 os 0.75f 即一旦填充了 75% 的 hasmap 容量,它将重新散列哈希图。如果我将负载因子的值设置为大于 1 会怎样,例如假设为 2 (super(capacity+1, 2.0f, true);)
它将如何在 sch 情况下工作以及哈希将如何在这里工作?
hashmap 的加载因子的默认值 os 0.75f 即一旦填充了 75% 的 hasmap 容量,它将重新散列哈希图。如果我将负载因子的值设置为大于 1 会怎样,例如假设为 2 (super(capacity+1, 2.0f, true);)
它将如何在 sch 情况下工作以及哈希将如何在这里工作?
如果我将负载因子的值设置为大于 1 会怎样,例如假设为 2 (super(capacity+1, 2.0f, true);)
你已经有了答案;
...一旦哈希图的200%容量被填满,它将重新哈希哈希图。
散列的工作原理相同,只是使用了较小的容量,这会影响性能。如果您使初始容量足够大,则负载因子永远不会发挥作用。负载因子仅在调整地图大小时适用。
注意:实际容量始终是 2 的幂。
我建议你试试看。
顺便说一句,更改负载因子可以更改元素出现的顺序,因为存储桶较少。尝试打印出 Set 或 Map 并进行比较。
Java 的 HashMap 使用封闭寻址,因此如果哈希表中的多个元素都哈希到同一个位置,Java 只是将它们都放在某个辅助数据结构中的同一个桶中。这允许负载因子任意高。这与负载因子不能超过 1 的线性探测哈希表不同。