在Java中HashMap的基本用法_JavaHashMap常见操作讲解

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

Java 中 HashMap 是最常用的键值对(key-value)集合之一,核心特点是查找快、无序、非线程安全、允许一个 null 键和任意多个 null 值。它不记录插入顺序,也不保证遍历顺序,适合以“通过 key 快速查 value”为主要需求的场景。

创建与初始化

需导入 java.util.HashMap,泛型指定 key 和 value 类型(不能用基本类型,要用包装类如 IntegerString 等):

  • HashMap map = 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)(后者效率较低,遍历所有值)

获取与遍历数据

三种常用方式,性能和用途各有侧重:

  • 只遍历 key:用 keySet() 得到 Set,再 for-each 或迭代器访问;适合只需 key 或需反复 get 的场景
  • 只遍历 value:用 values() 得到 Collection,但无法反查 key
  • 高效遍历键值对:推荐 entrySet(),返回

    Set>,一次拿到 key 和 value,避免重复哈希查找

示例(entrySet 推荐写法):

for (Map.Entry entry : map.entrySet()) {
System.out.println(entry.getKey() + "=" + entry.getValue());
}

其他实用方法

辅助判断与管理集合状态:

  • size():返回当前键值对数量
  • isEmpty():判断是否为空(不含任何映射)
  • clear():清空全部映射
  • keySet() / values() / entrySet() 返回的集合是弱一致性视图,修改原 map 会影响它们,但不能直接通过这些集合增删元素(会抛 UnsupportedOperationException