6

hashmap 的加载因子的默认值 os 0.75f 即一旦填充了 75% 的 hasmap 容量,它将重新散列哈希图。如果我将负载因子的值设置为大于 1 会怎样,例如假设为 2 (super(capacity+1, 2.0f, true);)

它将如何在 sch 情况下工作以及哈希将如何在这里工作?

4

2 回答 2

6

如果我将负载因子的值设置为大于 1 会怎样,例如假设为 2 (super(capacity+1, 2.0f, true);)

你已经有了答案;

...一旦哈希图的200%容量被填满,它将重新哈希哈希图。

散列的工作原理相同,只是使用了较小的容量,这会影响性能。如果您使初始容量足够大,则负载因子永远不会发挥作用。负载因子仅在调整地图大小时适用。

注意:实际容量始终是 2 的幂。

我建议你试试看。

顺便说一句,更改负载因子可以更改元素出现的顺序,因为存储桶较少。尝试打印出 Set 或 Map 并进行比较。

于 2016-08-14T19:15:32.697 回答
0

Java 的 HashMap 使用封闭寻址,因此如果哈希表中的多个元素都哈希到同一个位置,Java 只是将它们都放在某个辅助数据结构中的同一个桶中。这允许负载因子任意高。这与负载因子不能超过 1 的线性探测哈希表不同。

于 2016-08-14T19:20:41.220 回答