You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从String键值对的HashMap中通过指定键获取对应值?

解决HashMap获取值的类型错误问题

嘿,我来帮你搞定这个问题!先说说你代码里的错误到底出在哪:

你写的if(upper.get(upper.get("blazer")))这句话有两个核心问题:

  1. 嵌套的get完全没必要:upper.get("blazer")已经能直接拿到你要的"both"了,你再把这个结果当键传给另一个get,相当于去HashMap里找键为"both"的条目——但你的Map里根本没有这个键,最后只会返回null。
  2. if条件需要布尔值,但你返回的是字符串:Java里不能把String直接放在if条件里,编译器期望的是boolean类型(比如true/false),但你给的是String,这就触发了"incompatible types"错误。

正确获取"blazer"对应值的方式

如果你只是想拿到"blazer"对应的"both",直接用upper.get("blazer")就可以了。如果是要在if里做判断,得显式写出布尔逻辑,比如:

HashMap<String,String> upper = new HashMap<>();
upper.put("shoulder","both");
upper.put("blazer","both");

// 方式1:获取值并判断是否等于目标字符串
String blazerValue = upper.get("blazer");
if ("both".equals(blazerValue)) {
    // 这里写你要执行的逻辑
    System.out.println("Blazer对应的值是both");
}

// 方式2:先确认键存在,再获取值(避免null)
if (upper.containsKey("blazer")) {
    String value = upper.get("blazer");
    System.out.println("获取到blazer的值:" + value);
}

额外小提醒

用"both".equals(blazerValue)而不是blazerValue.equals("both")是个好习惯——如果blazerValue是null(比如Map里没有"blazer"这个键),后者会抛出空指针异常,前者则会安全地返回false。

内容的提问来源于stack exchange,提问作者Selin Gök

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 07:59:34