HashMap是Java中查找快、无序、非线程安全的键值对集合,允许一个null键和多个null值;核心操作包括put、get、remove、replace及containsKey/containsValue;推荐用entrySet()高效遍历键值对。

Java 中 HashMap 是最常用的键值对(key-value)集合之一,核心特点是查找快、无序、非线程安全、允许一个 null 键和任意多个 null 值。它不记录插入顺序,也不保证遍历顺序,适合以“通过 key 快速查 value”为主要需求的场景。
创建与初始化
需导入 java.util.HashMap,泛型指定 key 和 value 类型(不能用基本类型,要用包装类如 Integer、String 等):
HashMapmap = new HashMap(); - 可指定初始容量和加载因子优化性能:
new HashMap(16, 0.75f)(默认容量 16,加载因子 0.75) - 也可用已有 Map 初始化:
new HashMap(otherMap)
增删改查操作
核心方法简洁直接,语义清晰:
-
添加/更新:用
put(K key, V value)。若 key 已存在,则新 value 覆盖旧值 -
查询:用
get(Object key),返回对应 value;key 不存在时返回null -
删除:用
remove(Object key)或remove(Object key, Object value)(仅当键值都匹配才删) -
替换:用
replace(K key, V newValue)或replace(K key, V oldValue, V newValue) -
判断存在:用
containsKey(key)或containsValue(value)(后者效率较低,遍历所有值)
获取与遍历数据
三种常用方式,性能和用途各有侧重:
立即学习“Java免费学习笔记(深入)”;
-
只遍历 key:用
keySet()得到Set,再 for-each 或迭代器访问;适合只需 key 或需反复 get 的场景 -
只遍历 value:用
values()得到Collection,但无法反查 key -
高效遍历键值对:推荐
entrySet(),返回Set,一次拿到 key 和 value,避免重复哈希查找>
示例(entrySet 推荐写法):
for (Map.Entryentry : map.entrySet()) {
System.out.println(entry.getKey() + "=" + entry.getValue());
}
其他实用方法
辅助判断与管理集合状态:
-
size():返回当前键值对数量 -
isEmpty():判断是否为空(不含任何映射) -
clear():清空全部映射 -
keySet()/values()/entrySet()返回的集合是弱一致性视图,修改原 map 会影响它们,但不能直接通过这些集合增删元素(会抛UnsupportedOperationException)










