1

我有一个带有字符串键和字符串值的 HashMap。我想从列表中获取一个项目,我试图提供密钥并想获得价值,但它给出了一个错误。以下示例如何通过给键“blazer”获得“both”值?

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

 if(upper.get(upper.get("blazer"))) {} //gives an "incompatible types" error. 
 //Error: Required: boolean Found: java.lang.String
4

2 回答 2

2

明白这upper.get(key)不会返回一个boolean值。您已将您的定义HashMap如下:

HashMap<String,String> upper = new HashMap<>();

这意味着keyvalue都是 类型String。因此,提供一个有效keyget()方法将返回一个String

String myValue = upper.get("blazer");

如果您想key在尝试读取值之前检查 a 是否可用,您可以使用方法containsKey()with 将返回一个boolean值,指示 a 是否HashMap包含具有给定的条目key

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!");
}

您还可以像这样遍历可用key的 s:

Set<String> set = map.keySet();
for(String s : set){
    Log.e(TAG, "Map key = " + s + " value = " + map.get(s));
}
于 2018-05-29T18:24:05.547 回答
1

他们在那里拥有它的方式upper.get(upper.get("blazer"));只会返回null。

您正在传递upper.get("blazer")(这将返回“两者”)到您的外部upper.get。由于您的地图中没有存储“两者”键,因此它返回 null。

应该:

upper.get("blazer");
于 2018-05-29T16:47:29.993 回答