Java 中 HashMap 的工作原理
HashMap 是 Java 集合框架中一个非常重要的类,它实现了 Map 接口,用于存储键值对(key-value pairs)。HashMap 允许我们根据键快速查找、插入和删除值。其核心特点是基于哈希表实现,提供了平均时间复杂度为 O(1) 的基本操作。
基本结构
HashMap 主要由数组和链表或红黑树组成。具体来说:
- 数组:HashMap 内部维护了一个 Entry 数组,默认大小为 16。每个数组元素称为桶(bucket),用来存放 Entry 对象。
- Entry:表示单个键值对,包含四个属性:
key
、value
、hash
和next
。其中next
指向下一个 Entry 对象,用于解决哈希冲突时形成链表结构。 - 负载因子(Load Factor):默认值为 0.75,当 HashMap 中的条目数超过了容量乘以负载因子时,会自动扩容。
- 阈值(Threshold):即触发扩容的临界点,等于当前容量乘以负载因子。
工作流程
插入(put)
当你调用 put(key, value)
方法时,HashMa