example - inner class java español
Rompecabezas simple del mapa de Java (2)
¿Cuál es la mejor implementación para este método de biblioteca de propósito general?
public static <K, V> boolean containsEntry(
Map<K, V> map, K key, V value) {}
Los criterios para juzgar este rompecabezas, como en la mayoría de los rompecabezas de codificación, están en este orden:
- Lo completo
- Exactitud
- Actuación
- Belleza
- Recibo de la contribución de PayPal
EDITAR:
Bueno, ya que se cerró, podría publicar la respuesta. Creo que esto es probablemente óptimo:
V valueForKey = map.get(key);
return (valueForKey == null)
? value == null && map.containsKey(key)
: valueForKey.equals(value);
Una solución simple e inteligente sería:
return map.entrySet().contains(
new AbstractMap.SimpleImmutableEntry<K, V>(key, value));
Asigna una instancia, pero le da a la implementación del mapa un poco más de oportunidad para hacer algo óptimo.
Presumiblemente es para devolver un boolean
:
public static <K, V> boolean containsEntry(Map<K, V> map, K key, V value) {
return map.containsKey(key) && map.get(key).equals(value);
}
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);
}