26

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

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

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

  1. 完整性
  2. 正确性
  3. 表现
  4. 美丽
  5. 收到 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));

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

4

3 回答 3

3
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);
}

从已删除的帖子中复制。

于 2009-11-06T05:41:34.853 回答
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);
}

您也可以内联 isEqual 方法。

于 2009-11-06T05:20:28.170 回答
0

大概它是为了返回一个boolean

public static <K, V> boolean containsEntry(Map<K, V> map, K key, V value) {
    return map.containsKey(key) && map.get(key).equals(value);
}
于 2009-11-06T05:41:25.427 回答