Для каждого цикла на Java HashMap - программирование
Подтвердить что ты не робот

Для каждого цикла на Java HashMap

В основной программе чата, которую я написал, есть несколько ключевых слов, которые генерируют специальные действия, изображения, сообщения и т.д. Я храню все ключевые слова и специальные функции в HashMap. Ключевые слова - это ключи, а функции - значения. Я хочу сравнить пользовательский ввод с ключами с некоторым типом цикла. Я пробовал все, что мог, и ничего не работает. Вот что я могу понять:

myHashMap = <File Input>
for(String currentKey : <List of HashMap Keys>){
    if(user.getInput().equalsIgnoreCase(currentKey)){
        //Do related Value action
    }
}
...

Буду признателен за любую помощь. Простите меня, если я упустил аналогичный вопрос или если ответ очевиден.

4b9b3361

Ответ 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, если ключ не содержится в Карте.