web-dev-qa-db-ja.com

HashMapキーの存在を確認してください

Javaでは、HashMapに次のような形式のデータを完全に入力します。

HashMap<Integer, int[]> map = new HashMap<Integer, int[]>(1000000, 1);

ランダムキーの存在をチェックするときに何が速いか、たとえば100:

if (map.get(100) == null))

または

if (!map.containsKey(100))

質問は、マイクロ最適化の観点から興味深いものです。

9
Sophie Sperner

実際、両方のアプローチは同じです。 Java.util.HashMapソースコードを見ると、次のcontainsKeyの実現が見つかります。

public boolean containsKey(Object key) {
    return getEntry(key) != null;
}
6
bsiamionau

この2つは、map.get(key)がキーの場合にreturnを返す場合があることを除いて、nullタイプのみが異なりますが、map.containsKey(key)booleanを返します。これは、 map.get(key)nullを返します。

3
dShringi

この2つのアプローチに違いはありません。主な違いは、次に何をするかだけです。値が必要な場合は、もちろん、取得することで値を取得できます。

1
kofemann