直通车:Java集合框架系列目录
- 基本概念
- 继承关系
- 结构特点
- 常用API
- 遍历方式
- 代码示例
1.基本概念
HashMap:一种存储键/值关联的数据结构。
2.继承关系
HashMap是一个继承于AbstractMap的散列表,它存储的内容是键值对(key/value)映射。
HashMap实现了Cloneable接口,即覆盖了函数clone(),能被克隆。
HashMap实现java.io.Serializable接口,意即HashMap支持序列化,能通过序列化传输。
3.结构特点
- 采用“链地址法”
链地址法,意即数组加链表的结合。在每个数组元素上都有一个链表结构,HashMap通过HashCode对其要插入(put)或查找(get)的元素进行数组元素的快速匹配。 - 数组初始大小为16,后每次扩容一定是2的幂
当向容器添加元素的时候,会判断当前容器的元素个数,如果大于等于阈值—即当前数组的长度乘以加载因子的值,就会自动扩容。(加载因子默认为0.75) - 元素无序排列
元素处于哪个“哈希桶”(“桶”即数组元素)取决于键(Key)的哈希值(HashCode)。元素具体在链表的哪个位置只能通过遍历得到。 - 存储键/值对
键(Key)与值(Value)共同存储在entry节点中,HashMap存储entry节点。
HashMap最多只允许一条记录的键为Null(多条会覆盖),允许多条记录的值为 Null。 - 不是线程安全的
可以用 Collections的synchronizedMap
方法使HashMap具有线程安全的能力,或者使用ConcurrentHashMap
。
4.常用API
API | 含义 |
---|---|
clear() | 从 Map 中删除所有映射 |
remove(Object key) |