Java 如何从HashMap中获取字符串键?
我有一个带有字符串键和字符串值的HashMap。我想从列表中获取一个项,我试图给出键并想得到值,但它给出了一个错误。 下面的示例如何使用“blazer”键获得“两者”值Java 如何从HashMap中获取字符串键?,java,hashmap,getvalue,Java,Hashmap,Getvalue,我有一个带有字符串键和字符串值的HashMap。我想从列表中获取一个项,我试图给出键并想得到值,但它给出了一个错误。 下面的示例如何使用“blazer”键获得“两者”值 HashMap upper=newhashmap(); 上部。放(“肩部”、“两侧”); 鞋面。推杆(“运动夹克”,“两者”); if(upper.get(upper.get(“blazer”)){}//给出“不兼容类型”错误。 //错误:必需:找到布尔值:java.lang.String 他们是你在那里的方式upper.get
HashMap upper=newhashmap();
上部。放(“肩部”、“两侧”);
鞋面。推杆(“运动夹克”,“两者”);
if(upper.get(upper.get(“blazer”)){}//给出“不兼容类型”错误。
//错误:必需:找到布尔值:java.lang.String
他们是你在那里的方式upper.get(upper.get(“blazer”))
将只返回null
您正在将upper.get(“blazer”)
(将返回“两者”)传递到外部upper.get
。由于地图中没有存储“both”键,因此它返回null
应该是:
upper.get("blazer");
请理解
upper.get(key)
不会返回布尔值。您已将您的HashMap
定义如下:
HashMap<String,String> upper = new HashMap<>();
如果要在尝试读取值之前检查键是否可用,可以使用containsKey()
方法,将返回一个布尔值,指示HashMap
是否包含具有给定键的条目:
if(upper.containsKey("blazer")){
String myValue = upper.get("blazer");
Log.e(TAG, "Yes blazer is available : " + myValue);
}
else{
Log.e(TAG, "No blazer is available!");
}
您还可以像下面这样重复使用可用的键
s:
Set<String> set = map.keySet();
for(String s : set){
Log.e(TAG, "Map key = " + s + " value = " + map.get(s));
}
Set=map.keySet();
for(字符串s:set){
Log.e(标记,“Map key=“+s+”value=“+Map.get(s));
}
。在本例中,自upper.get(upper.get(“blazer”))起,您将获得null;与upper.get(“两者”)相同;由于您没有一个键值为两者的条目,因此将得到null。“不清楚你的目的是什么。@巴恩斯很抱歉,我编辑了我的问题并解决了它。这样更好。”。现在,(即使您没有发布堆栈跟踪),我们可以理解您为什么会出现错误。取消否决票。为什么会这样?不清楚OP试图做什么。若要从hashmap中获取值,需要为其指定键map.get(key)
。在这种情况下,键是“blazer”
OP已经为upper.get的两个调用提供了一个正确类型的键。如果是,OP所做的操作与upper.get(“两者”)相同因为没有键“两者”
,所以它不起作用。不确定不兼容类型是怎么回事
错误,也许我们找不到了something@Sacha对不起,那是我的错。我复制并粘贴了代码块,这一行在if中。if(upper.get(upper.get(“blazer”))所以它给了我不兼容的类型错误。当你回答这个问题时,我意识到了我的错。
if(upper.containsKey("blazer")){
String myValue = upper.get("blazer");
Log.e(TAG, "Yes blazer is available : " + myValue);
}
else{
Log.e(TAG, "No blazer is available!");
}
Set<String> set = map.keySet();
for(String s : set){
Log.e(TAG, "Map key = " + s + " value = " + map.get(s));
}