对于Java HashMap上的每个循环

我写的基本聊天程序有几个关键词,可以生成特殊的动作,图像,消息等。我将所有关键词和特殊函数存储在HashMap中。 关键词是键,function是值。 我想将用户输入与键与某种类型的循环进行比较。 我已经尝试了我能想到的一切,没有任何作用。 这是我能弄清楚的:

myHashMap =  for(String currentKey : ){ if(user.getInput().equalsIgnoreCase(currentKey)){ //Do related Value action } } ... 

我将不胜感激任何帮助。 如果我忽略了类似的问题或答案是否明显,请原谅我。

好吧,你可以写:

 for(String currentKey : myHashMap.keySet()){ 

但这并不是使用哈希映射的最佳方式。

更好的方法是使用全小写键填充myHashMap ,然后编写:

 theFunction = myHashMap.get(user.getInput().toLowerCase()); 

检索函数(如果用户输入没有出现在地图中,则返回null )。

如果您需要访问密钥和值,那么这是最有效的方法

  for(Entry e : m.entrySet()) { String key = e.getKey(); String value = e.getValue(); } 

仅限Java 8及以上版本

 map.forEach((k,v)->System.out.println("Key: " + k + "Value: " + v)); 

这里更好的模式可能是:

 Value val = hashMap.get(user.getInput()); if (val != null) { doVal(); } else { // handle normal, non-keyword/specfial function } 

如果密钥未包含在Map中,则利用HashMap返回null的事实。