Java中通过HashMap的get()方法根据键获取值,需注意null返回值歧义、键类型一致性、自定义键须重写equals/hashCode,推荐用containsKey()或getOrDefault()提升安全性。

Java 中通过键从 HashMap 获取对应对象,主要使用 get() 方法。该方法接收一个键作为参数,返回与之关联的值;如果键不存在,则返回 null(注意:值本身也可能为 null,所以不能仅靠 null 判断键是否存在)。
基本用法:调用 get() 方法
这是最直接的方式:
- 确保键类型与
HashMap声明的键类型一致(如String、Integer等) - 调用
map.get(key),返回对应 value 或null - 示例:Map<String, Person> map = new HashMap<>();
Person p = map.get("zhangsan"); // 根据字符串键获取 Person 对象
安全获取:避免空指针与判断键是否存在
为防止因 null 值误判或后续操作抛出 NullPointerException,推荐结合 containsKey() 或使用 Java 8+ 的新方法:
Java Maven 项目审查工作流的通用输入处理。当 Java Maven 项目以 ZIP压缩包或 GitLab 仓库 URL 形式提供且需要...时使用。
-
map.containsKey(key)先判断键是否存在,再调用get() -
map.getOrDefault(key, defaultValue):键不存在时返回默认值,避免null -
map.computeIfAbsent(key, k -> new Person()):键不存在则自动创建并放入,适合缓存场景
注意事项:键的 equals 和 hashCode 必须正确实现
自定义类作键时,必须重写 equals() 和 hashCode() 方法,否则 get() 可能无法命中:
立即学习“Java免费学习笔记(深入)”;
- 若未重写,不同实例即使内容相同,也会因默认
hashCode不同而散列到不同桶中 - 例如用
new User("Alice")去 get,但 map 中存的是另一个User("Alice")实例,不重写就查不到 - IDE(如 IntelliJ)可一键生成合规的
equals和hashCode
泛型与类型安全提醒
声明时务必使用泛型,避免运行时类型转换错误:
- ✅ 正确:
Map<String, Product> products = new HashMap<>(); Product p = products.get("id123"); - ❌ 危险:
Map products = new HashMap(); Object p = products.get("id123");—— 需手动强转,易出ClassCastException

















