简单的Java Map拼图[已关闭]

2022-09-01 17:51:37

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

public static <K, V> boolean containsEntry(
    Map<K, V> map, K key, V value) {}

与大多数编码谜题一样,判断此谜题的标准是按以下顺序排列的:

  1. 完整性
  2. 正确性
  3. 性能
  4. 收到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));

它确实分配了一个实例,但它为映射实现提供了更多机会来执行最佳操作。


答案 1
public static <K, V> boolean containsEntry(Map<K, V> map, K key, V value) {
    returns map.containsKey(key) && isEqual(map.get(key), value);
}
private static boolean isEqual(Object a, Object b) {
    return a == null ? a == b : a.equals(b);
}

从已删除的帖子复制。


答案 2
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);
}

您还可以内联 isEqual 方法。