📅  最后修改于: 2023-12-03 15:15:56.159000             🧑  作者: Mango
在 Java 的 HashMap 中,负载因子是指哈希表中元素数量和哈希表大小的比率。负载因子越大,哈希表中元素数量占哈希表大小的比率就越高。
当 HashMap 中的元素数量超过负载因子与哈希表大小的乘积时,就会触发 rehashing(重新哈希)操作,即将哈希表大小扩大一倍,并将所有元素重新分配到新的哈希表中。
在哈希表中,元素的位置是根据其 key 的哈希值计算得出的。如果负载因子过大,哈希值相同的 key 就会被分配到同一个位置上,这就导致了哈希表出现大量的链表,从而使得查询元素的效率降低。
为了保证查询效率,避免出现大量的链表,我们需要调整负载因子。一般来说,负载因子的取值在 0.75 左右是比较合适的。
下面是一个使用负载因子为 0.75 的 HashMap 示例代码:
Map<String, Integer> map = new HashMap<>(16, 0.75f);
map.put("apple", 1);
map.put("banana", 2);
map.put("cat", 3);
map.put("dog", 4);
map.put("elephant", 5);
map.put("fish", 6);
map.put("grape", 7);
map.put("hello", 8);
map.put("idea", 9);
map.put("jungle", 10);
for (Map.Entry<String, Integer> entry : map.entrySet()) {
System.out.println(entry.getKey() + " => " + entry.getValue());
}
在上面的代码中,我们创建了一个初始化大小为 16,负载因子为 0.75 的 HashMap,向其中添加了 10 个元素,并使用 foreach 循环遍历了 HashMap 中的所有元素。
Java HashMap 中的负载因子是控制 HashMap 性能与空间之间平衡的重要参数。对于大部分情况下的应用程序来说,负载因子的取值在 0.75 左右是比较合适的。