¿Cuál es la mejor implementación para este método de biblioteca de propósito general?Rompecabezas de Simple Java Map
public static <K, V> boolean containsEntry(
Map<K, V> map, K key, V value) {}
Criterios para juzgar este rompecabezas, al igual que con la mayoría de los puzzles de codificación, son en este orden:
- Integridad
- corrección
- Rendimiento
- belleza
- recibo de la contribución de PayPal
EDIT:
Bueno, ya que quedó cerrado, que bien podría publicar la respuesta. Creo que esto es probablemente óptima:
V valueForKey = map.get(key);
return (valueForKey == null)
? value == null && map.containsKey(key)
: valueForKey.equals(value);
Una solución sencilla sería inteligente:
return map.entrySet().contains(
new AbstractMap.SimpleImmutableEntry<K, V>(key, value));
lo hace asignar una instancia, pero da la implementación mapa un poco más oportunidad de hacer algo óptimo.
"Hay por lo menos una mejor respuesta" - No, la respuesta es ** una ** 'mejor' por definición ... – jjnguy
Kevin, si vas a hacer preguntas similares a esta, debes establecer algunas reglas mejores. De lo contrario, esta no es una pregunta que pueda ser suficientemente respondida. – jjnguy
Ok, lo estoy intentando. Ver editar. Tengo curiosidad acerca de su definición de mejor, sin embargo. Si cuatro cartas de mi mano de póker son 2 de tréboles, 3 de tréboles, as de espadas, as de corazones, ¿cuál es la mejor carta que podría tener? –