Hexo使用记录

Posted by zengchengjie on Tuesday, December 3, 2024

HashMap知识记录

【HashMap】初始化时,尽量指定初始值大小,是什么意思?

在初始化 HashMap 时,指定初始容量可以提高性能,特别是在你知道预期元素数量的情况下。这可以减少哈希表的扩容次数,从而提升插入操作的效率。

对于你的代码,假设你预计会存储大约 n 个元素,可以在初始化 HashMap 时指定一个合适的初始容量。通常情况下,可以选择比预期元素数量稍大的值,以避免频繁扩容。

示例:

假设你预计会存储大约 10 个元素,可以这样初始化 HashMap

Map<String, Object> map = new HashMap<>(16); // 16 是一个常见的默认初始容量

更精确的初始容量计算:

如果你能更准确地估计元素的数量,可以根据实际情况调整初始容量。例如,如果你预计会有 10 个元素,可以稍微增加一点以确保不会立即扩容:

Map<String, Object> map = new HashMap<>(12); // 预计 10 个元素,预留一些空间

考虑负载因子:

HashMap 的构造函数还可以接受第二个参数,即负载因子(load factor)。负载因子决定了哈希表在扩容之前可以达到多满。默认负载因子是 0.75。如果你知道元素数量并且希望进一步优化性能,可以调整负载因子。

示例:

Map<String, Object> map = new HashMap<>(12, 0.75f); // 初始容量 12,负载因子 0.75

应用到你的代码:

根据你的具体情况,假设你预计会存储大约 10 个元素,可以这样修改:

Map<String, Object> map = new HashMap<>(12);

这样可以提高 HashMap 的性能,特别是在频繁插入元素的情况下。