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