Как получить строковый ключ из HashMap? - PullRequest
0 голосов
/ 29 мая 2018

У меня есть HashMap со строковым ключом и строковым значением.Я хочу получить элемент из списка, я пытался дать ключ и хотел получить значение, но он выдает ошибку.В следующем примере, как я могу получить «оба» значения с помощью клавиши «блейзер»?

 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

Ответы [ 2 ]

0 голосов
/ 29 мая 2018

Поймите, что upper.get(key) не вернет значение boolean.Вы определили свой HashMap следующим образом:

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

Это означает, что оба типа key и value будут иметь тип String.Таким образом, при предоставлении действительного key метод get() вернет String:

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

Если вы хотите проверить, доступен ли key, прежде чем пытаться прочитать значение, которое выможно использовать метод containsKey() с, который вернет значение 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));
}
0 голосов
/ 29 мая 2018

Они, как у вас там есть, upper.get(upper.get("blazer")); просто вернули бы ноль.

Вы передаете upper.get("blazer") (что вернет "оба") к вашему внешнему upper.get.Поскольку у вас нет ключа «оба», хранящегося на вашей карте, он возвращает ноль.

Должно быть:

upper.get("blazer");
...