2012-01-16 13 views
8

¿Qué sucede si necesito buscar rápidamente no solo por la clave sino también por el valor? En otras palabras, ¿hay una construcción como llave maestra en lugar de clave-valor?¿Puedo tener un mapa de clave (en lugar de clave-valor) en Java?

+1

Observe que 'BiMap' de Guava son básicamente dos' Map's juntos y se mantienen simétricos, por lo que puede hacerlo usted mismo si no desea agregar una biblioteca adicional. – Viruzzo

Respuesta

9

Parece que quieres un bimap - Utilizaría las implementaciones en Guava si fuera tú; hay una interfaz BiMap y varias implementaciones, como HashBiMap y ImmutableBiMap.

Tenga en cuenta que generalmente ve un BiMap desde un "lado" (K1 a K2), y simplemente llame al inverse() para obtener la vista opuesta de las cosas (K2 a K1).

5

Varias bibliotecas tienen algo así. Por ejemplo, Google Guava tiene un BiMap (mapa bidireccional). Lamentablemente, no hay un mapa bidireccional en la biblioteca estándar de Java.

0

Para aclarar, que tendría algún tipo de mapa con los siguientes pares clave: valor:

Map<String, String> map = new HashMap<String, String>(); 
map.put("foo", "Freddy"); 
map.put("bar", "Bobby"); 

Entonces, usted quiere hacer map.get ("foo") y obtener Freddy, o hacer map.get ("Freddy") y obtener foo?

Si es así, marque this post fuera.

Cuestiones relacionadas