java中判断hashmap键存在用containskey()(o(1)),值存在用containsvalue()(o(n));不可用get(key)==null判键是否存在,应优先用containskey()或getordefault()。

Java 中判断 HashMap 是否存在某个键或值,主要靠两个方法:containsKey() 和 containsValue(),它们都返回 boolean 类型结果,用起来直接明了。
判断键是否存在:用 containsKey()
这是最常用、效率最高的方式。HashMap 内部通过哈希定位,平均时间复杂度为 O(1)。
- 调用 map.containsKey(key),传入你要查的键对象
- 如果该键在 map 中已存在(且未被 remove),返回 true;否则返回 false
- 注意:key 为
null也是合法的,HashMap 允许一个 null 键,containsKey(null)可正常工作
判断值是否存在:用 containsValue()
这个操作开销比查键大得多,因为需要遍历所有 value 进行 equals 比较,最坏时间复杂度是 O(n)。
- 调用 map.containsValue(value),传入你要查的值对象
- 只要有一个键值对的 value 与参数 equals() 返回 true,就返回 true
- 如果 value 是
null,它会正确匹配 map 中 value 为 null 的条目 - 不推荐在大数据量 map 中高频调用此方法;如需频繁按值查找,考虑反向索引或改用其他结构
常见误区和补充说明
别把 get(key) == null 当作“键不存在”的可靠依据——因为键可能存在,但对应值恰好是 null。
- 正确做法:先用
containsKey(key)确认键是否存在;再用get(key)获取值 - 如果只想安全取值并提供默认,优先用
getOrDefault(key, defaultValue),避免空指针和冗余判断 - 检查整个 map 是否为空,用
isEmpty(),不是containsKey(null)或size() == 0的替代写法(虽然等价,但语义更清晰)
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











