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 等):
HashMap map = new HashMap(); new HashMap(16, 0.75f)(默认容量 16,加载因子 0.75)
初始化: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)(后者效率较低,遍历所有值)三种常用方式,性能和用途各有侧重:
keySet() 得到 Set,再 for-each 或迭代器访问;适合只需 key 或需反复 get 的场景values() 得到 Collection,但无法反查 keyentrySet(),返回 Set> ,一次拿到 key 和 value,避免重复哈希查找示例(entrySet 推荐写法):
for (Map.Entryentry : map.entrySet()) {
System.out.println(entry.getKey() + "=" + entry.getValue());
}
辅助判断与管理集合状态:
size():返回当前键值对数量isEmpty():判断是否为空(不含任何映射)clear():清空全部映射keySet() / values() / entrySet() 返回的集合是弱一致性视图,修改原 map 会影响它们,但不能直接通过这些集合增删元素(会抛 UnsupportedOperationException)