この汎用ライブラリ メソッドの最適な実装は何ですか?
public static <K, V> boolean containsEntry(
Map<K, V> map, K key, V value) {}
ほとんどのコーディング パズルと同様に、このパズルの判断基準は次のとおりです。
- 完全
- 正しさ
- パフォーマンス
- 美しさ
- PayPal 拠出金の受領
編集:
では、締め切らせていただきましたので、回答を投稿させていただきます。これはおそらく最適だと思います:
V valueForKey = map.get(key);
return (valueForKey == null)
? value == null && map.containsKey(key)
: valueForKey.equals(value);
巧妙で単純な解決策は次のとおりです。
return map.entrySet().contains(
new AbstractMap.SimpleImmutableEntry<K, V>(key, value));
インスタンスを割り当てますが、マップの実装に最適な処理を行う機会が少し増えます。