这种通用库方法的最佳实现是什么?
public static <K, V> boolean containsEntry(
Map<K, V> map, K key, V value) {}
与大多数编码难题一样,判断此谜题的标准依次为:
修改
好吧,既然关闭了,我不妨发布答案。我认为这可能是最佳的:
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));
它确实分配了一个实例,但它为地图实现提供了更多机会来做一些最佳的事情。
答案 0 :(得分: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);
}
<强> Copied from deleted post. 强>
答案 1 :(得分: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);
}