简单的Java地图拼图

Kev*_*ion 25 java puzzle collections

这种通用库方法的最佳实现是什么?

public static <K, V> boolean containsEntry(
    Map<K, V> map, K key, V value) {}
Run Code Online (Sandbox Code Playgroud)

与大多数编码难题一样,判断此谜题的标准依次为:

  1. 完整性
  2. 正确性
  3. 性能
  4. 美女
  5. 收到PayPal捐款

编辑:

好吧,既然关闭了,我不妨发布答案.我认为这可能是最佳的:

  V valueForKey = map.get(key);
  return (valueForKey == null)
      ? value == null && map.containsKey(key)
      : valueForKey.equals(value);
Run Code Online (Sandbox Code Playgroud)

一个聪明的简单解决方案是:

  return map.entrySet().contains(
      new AbstractMap.SimpleImmutableEntry<K, V>(key, value));
Run Code Online (Sandbox Code Playgroud)

它确实分配了一个实例,但它为地图实现提供了更多机会来做一些最佳的事情.

not*_*oop 0

public static <K, V> boolean containsEntry(Map<K, V> map, K key, V value) {
    returns map.containsKey(key) & isEquals(map.get(key), value);
}
private static boolean isEqual(Object a, Object b) {
    return a == null ? a == b : a.equals(b);
}
Run Code Online (Sandbox Code Playgroud)

您还可以内联 isEqual 方法。