tables inner example español java collections puzzle

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:

  1. Lo completo
  2. Exactitud
  3. Actuación
  4. Belleza
  5. 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); }

Copiado de la publicación eliminada.