Для каждого цикла на Java HashMap
В основной программе чата, которую я написал, есть несколько ключевых слов, которые генерируют специальные действия, изображения, сообщения и т.д. Я храню все ключевые слова и специальные функции в HashMap. Ключевые слова - это ключи, а функции - значения. Я хочу сравнить пользовательский ввод с ключами с некоторым типом цикла. Я пробовал все, что мог, и ничего не работает. Вот что я могу понять:
myHashMap = <File Input>
for(String currentKey : <List of HashMap Keys>){
if(user.getInput().equalsIgnoreCase(currentKey)){
//Do related Value action
}
}
...
Буду признателен за любую помощь. Простите меня, если я упустил аналогичный вопрос или если ответ очевиден.
Ответы
Ответ 1
Ну, вы можете написать:
for(String currentKey : myHashMap.keySet()){
но это не лучший способ использовать хэш-карту.
Лучший подход состоит в том, чтобы заполнить myHashMap
всеми строчными клавишами, а затем записать:
theFunction = myHashMap.get(user.getInput().toLowerCase());
чтобы получить функцию (или null
, если пользовательский ввод не отображается на карте).
Ответ 2
Если вам нужен доступ к ключу и значению, то это наиболее эффективный способ
for(Entry<String, String> e : m.entrySet()) {
String key = e.getKey();
String value = e.getValue();
}
Ответ 3
Только в Java 8 и выше
map.forEach((k,v)->System.out.println("Key: " + k + "Value: " + v));
Ответ 4
Лучшая модель здесь может быть:
Value val = hashMap.get(user.getInput());
if (val != null) {
doVal();
}
else {
// handle normal, non-keyword/specfial function
}
который использует тот факт, что HashMap возвращает null
, если ключ не содержится в Карте.