如何从String键值对的HashMap中通过指定键获取对应值?
解决HashMap获取值的类型错误问题
嘿,我来帮你搞定这个问题!先说说你代码里的错误到底出在哪:
你写的if(upper.get(upper.get("blazer")))这句话有两个核心问题:
- 嵌套的get完全没必要:
upper.get("blazer")已经能直接拿到你要的"both"了,你再把这个结果当键传给另一个get,相当于去HashMap里找键为"both"的条目——但你的Map里根本没有这个键,最后只会返回null。 - 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
相关产品推荐
相关产品推荐

