HashMapでのキーの存在チェック 質問する

HashMapでのキーの存在チェック 質問する

HashMap 内のキーの存在を確認することは常に必要ですか?

たとえば 1000 エントリの HashMap があり、効率を改善したいと考えています。HashMap が非常に頻繁にアクセスされる場合、アクセスのたびにキーの存在を確認すると、大きなオーバーヘッドが発生します。代わりに、キーが存在せず例外が発生した場合は、例外をキャッチできます (これがまれにしか発生しないことがわかっている場合)。これにより、HashMap へのアクセスが半分に削減されます。

これは良いプログラミング方法ではないかもしれませんが、アクセス回数を減らすのに役立ちます。それとも、何か見落としているのでしょうか?

[更新] HashMap に null 値がありません。

ベストアンサー1

null 値を保存したことがありますか? そうでない場合は、次のようにします。

Foo value = map.get(key);
if (value != null) {
    ...
} else {
    // No such key
}

それ以外の場合は、null 値が返された場合にのみ存在をチェックできます。

Foo value = map.get(key);
if (value != null) {
    ...
} else {
    // Key might be present...
    if (map.containsKey(key)) {
       // Okay, there's a key but the value is null
    } else {
       // Definitely no such key
    }
}

おすすめ記事