[Java 基础]HashMap
HashMap
是 Java Collections Framework 中的一个重要数据结构,它实现了 Map
接口。它的核心功能是存储键值对(key-value pairs),并且通过键来快速查找、插入和删除对应的值。
你可以把它想象成一个字典或者电话簿:
- 键(Key) 就像电话簿里的“姓名”,它是唯一的。
- 值(Value) 就像电话簿里的“电话号码”,一个姓名对应一个电话号码。
HashMap 的特点:
- 存储的是 key-value 结构
- 允许 null 键和 null 值
- 基于哈希表实现(数组+链表/红黑树)
结构示意请看 VCR:https://visualgo.net/en/hashtable
HashMap 的底层实现原理:
创建
import java.util.HashMap;HashMap<String, Integer> map = new HashMap<>();
常用方法
方法 | 描述 |
---|---|
public V put(K key, V value) | 向 hashMap 中添加键值对 |
public V get(Object key) | 根据 key 获取到对应的值 |
public int size() | 获取 hashMap 中的键值对个数 |
public boolean isEmpty() | 判断 hashMap 是否为空 |
public V remove(Object key) | 删除指定 key 的键值对 |
public Set keySet() | 返回 hashMap 中所有的 key 组成的一个视图 |
和其他容器的对比
特性 | ArrayList | LinkedList | HashSet | HashMap |
---|---|---|---|---|
是否保持插入顺序 | 是 | 是 | 否 | 否 |
是否允许元素重复 | 是 | 是 | 否 | 不允许 key 重复 |
查找效率 | O(n)(遍历查找) | O(n)(遍历查找) | O(1)(哈希查找) | O(1)(哈希查找) |
适用场景 | 索引查找 | 频繁插入、删除 | 去重、快速查找 | 存储键值映射 |
更多关于 HashMap 的信息可以查阅 Oracle 的 Java Doc 或查看源码:
https://docs.oracle.com/javase/8/docs/api/java/util/HashMap.html