我写的一个基本聊天程序有几个关键词,可以生成特殊动作,图像,消息等。我将所有关键词和特殊函数存储在HashMap中。关键词是键,功能是值。我想将用户输入与键与某种类型的循环进行比较。我已经尝试了我能想到的一切,但没有任何作用。这是我能想到的:
myHashMap = <File Input>
for(String currentKey : <List of HashMap Keys>){
if(user.getInput().equalsIgnoreCase(currentKey)){
//Do related Value action
}
}
...
我将不胜感激任何帮助。如果我忽略了类似的问题,或者答案是否明显,请原谅我。
答案 0 :(得分:62)
如果您需要访问密钥和值,那么这是最有效的方式
for(Entry<String, String> e : m.entrySet()) {
String key = e.getKey();
String value = e.getValue();
}
答案 1 :(得分:23)
好吧,你可以写:
for(String currentKey : myHashMap.keySet()){
但这并不是使用哈希映射的最佳方法。
更好的方法是使用全小写键填充myHashMap
,然后写:
theFunction = myHashMap.get(user.getInput().toLowerCase());
检索函数(如果用户输入没有出现在地图中,则为null
。)
答案 2 :(得分:8)
仅限Java 8&amp;上面
map.forEach((k,v)->System.out.println("Key: " + k + "Value: " + v));
答案 3 :(得分:1)
这里更好的模式可能是:
Value val = hashMap.get(user.getInput());
if (val != null) {
doVal();
}
else {
// handle normal, non-keyword/specfial function
}
利用了如果密钥未包含在Map中,HashMap返回null
的事实。