Java中判断HashMap是否包含指定键或值应使用containsKey()和containsValue():前者时间复杂度O(1),支持null键,推荐优先使用;后者时间复杂度O(n),基于equals()比较,性能较低,仅在必要时使用。

Java 中判断 HashMap 是否包含指定键或值,主要靠 containsKey() 和 containsValue() 两个方法,它们都返回 boolean 类型结果,用法直接、语义清晰。
判断是否包含某个键(推荐优先使用)
用 containsKey(key) 检查键是否存在。该方法时间复杂度接近 O(1),因为内部通过哈希计算快速定位桶位置,效率高且稳定。
- 即使键对应值为
null,只要键存在,containsKey()仍返回true - 支持
null键:若 map 中存过map.put(null, "abc"),则map.containsKey(null)返回true - 典型写法:if (map.containsKey("name")) { ... }
判断是否包含某个值
用 containsValue(value) 检查值是否存在。注意:该方法需遍历所有 entry,时间复杂度为 O(n),在大数据量时性能明显低于 containsKey()。
- 比较基于
equals(),不是引用相等;对null值也安全处理 - 若多个键映射到相同值,只要有一个匹配就返回
true - 不适用于高频查询场景,建议仅在必要时使用
常见误区与注意事项
-
别用 get() != null 判断键是否存在:如果键存在但对应值恰好是
null,get(key) == null会误判为“键不存在” -
containsKey() 和 containsValue() 都不会抛出异常,传入
null参数是合法的(除非 key 类型本身不允许 null,如 TreeMap) - 如果需要“存在则取值,否则返回默认值”,可结合
getOrDefault(key, defaultValue),更简洁安全


















