簡體   English   中英

對於Java HashMap上的每個循環

[英]For each loop on Java HashMap

我寫的基本聊天程序有幾個關鍵詞,可以生成特殊的動作,圖像,消息等。我將所有關鍵詞和特殊函數存儲在HashMap中。 關鍵詞是鍵,功能是值。 我想將用戶輸入與鍵與某種類型的循環進行比較。 我已經嘗試了我能想到的一切,但沒有任何作用。 這是我可以弄清楚的:

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

我將不勝感激任何幫助。 如果我忽略了類似的問題,或者答案是否明顯,請原諒我。

如果您需要訪問密鑰和值,那么這是最有效的方法

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

好吧,你可以寫:

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

但這並不是使用哈希映射的最佳方式。

更好的方法是使用全小寫鍵填充myHashMap ,然后編寫:

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

檢索函數(如果用戶輸入沒有出現在地圖中,則返回null )。

僅限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的事實。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM