19

私が作成した基本的なチャット プログラムには、特別なアクション、画像、メッセージなどを生成するいくつかのキーワードがあります。すべてのキーワードと特別な関数を HashMap に格納します。キーワードはキーであり、関数は値です。ユーザー入力とキーをある種のループで比較したい。考えられることはすべて試しましたが、何もうまくいきません。これは私が理解できるものです:

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

助けていただければ幸いです。私が同様の質問を見落としていたり​​、答えが明らかだったりした場合は、ご容赦ください。

4

4 に答える 4

70

キーと値の両方にアクセスする必要がある場合、これが最も効率的な方法です

    for(Entry<String, String> e : m.entrySet()) {
        String key = e.getKey();
        String value = e.getValue();
    }
于 2013-01-04T02:01:15.297 に答える
24

さて、あなたは書くことができます:

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

しかし、これはハッシュマップを使用する最良の方法ではありません。

より良いアプローチはmyHashMap、すべて小文字のキーを入力してから、次のように書くことです。

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

関数を取得します (またはnull、ユーザー入力がマップに表示されない場合)。

于 2013-01-04T01:51:18.777 に答える
12

Java 8 以降のみ

map.forEach((k,v)->System.out.println("Key: " + k + "Value: " + v));
于 2016-10-19T07:38:09.460 に答える
1

ここでのより良いパターンは次のとおりです。

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

nullこれは、キーがマップに含まれていない場合にHashMap が返されるという事実を利用しています。

于 2013-01-04T01:51:29.917 に答える