文章目录
LinkedHashMap 在 Java 中可维护元素插入或访问顺序,并实现 LRU 缓存,适用于有序存储数据和缓存管理场景。
在 Java 中,LinkedHashMap
的构造函数可以接受三个参数,分别是 initialCapacity
、loadFactor
和 accessOrder
。以下是具体含义:
1. initialCapacity
(初始容量)
- 含义:指定
LinkedHashMap
的初始容量,也就是可以存储的键值对的数量。 - 默认值:默认初始容量是
16
。 - 工作机制:当存储的键值对数量超过容量的
loadFactor
阈值时,LinkedHashMap
会自动扩容。 - 设置建议:如果预估可以存储的键值对数量,可以设置为大于等于预估值。否则,系统在达到阈值时会进行扩容,可能影响性能。
示例:
new LinkedHashMap<>(16, 0.75f, true); // 初始容量为 16
2. loadFactor
(加载因子)
- 含义:定义
LinkedHashMap
的扩容触发条件,计算公式为: 扩容阈值=initialCapacity×loadFactor\text{扩容阈值} = \text{initialCapacity} \times \text{loadFactor} - 默认值:
0.75
。 - 工作机制:当存储的键值对数量超过扩容阈值时,
LinkedHashMap
会将容量增加一倍(重新哈希)。 - 设置建议:
- 较低的加载因子(如 0.5):减少冲突,但会增加内存占用。
- 较高的加载因子(如 1.0):节省内存,但会增加冲突概率,影响性能。
示例:
new LinkedHashMap