如何从 HashMap 中获取字符串键?

How to get String key from HashMap?

我有一个包含字符串键和字符串值的 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

按照他们的方式,你在那里 upper.get(upper.get("blazer")); 只会 return null。

您正在将 upper.get("blazer")(这将 return "both")传递给您的外部 upper.get。由于您的地图中没有存储 "both" 键,因此它 return 为空。

应该是:

upper.get("blazer");

了解 upper.get(key) 不会 return 成为 boolean 值。您已将 HashMap 定义如下:

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

这意味着 keyvalue 都是 String 类型。因此,提供一个有效的 key get() 方法将 return 一个 String:

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

如果您想在尝试读取值之前检查 key 是否可用,您可以使用方法 containsKey() 将 return 设为 boolean 值指示 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

Set<String> set = map.keySet();
for(String s : set){
    Log.e(TAG, "Map key = " + s + " value = " + map.get(s));
}