Esta pregunta fue inicialmente mal formulada, vea el EDITAR a continuación. Lo dejaré para contexto.Estructura de datos de mapeo uno-a-uno (A, B) con getKey (B) en O (1)?
He estado pensando en formas inteligentes de crear un mapeo biyectivo (es decir, uno a uno). El mapeo de una función A-> B (muchos a uno) es básicamente lo que hace HashMap (A, B). Si ahora quisiera tener una estructura de datos que implementa algo uno a uno con contains() en O (1), ¿habría algo en las bibliotecas estándar de Java que pudiera usar? Eso sí, no necesito esto para nada en este momento, esto fue algo en lo que pensé recientemente y no pude crear una estructura de datos, por lo que las respuestas no son apresuradas. ¿Hay una clase así? Si no, ¿qué piensas por qué es eso?
Todo lo que pude encontrar en SO son cosas sobre hibernación, eso no fue de ninguna ayuda para mí.
EDIT: Mi pregunta fue mal formulada, por lo que se debe dar alguna explicación.
Lo que quise decir es que es el mapeo "hacia atrás" B-> A. HashMap (A, B) contiene (A) y contiene (B) ambos en O (1), por lo que ni siquiera es lo que quise decir, disculpe la confusión. Lo que quise decir es, ¿hay un mapeo de la estructura de datos A < -> B que tiene getValue (A) y getKey (B) en O (1)?
Me doy cuenta de que esto se puede hacer con dos HashMaps (A, B) y (B, A) que se mantienen para contener la misma relación, pero creo que debe haber una estructura de datos que maneje eso sin tener que hacerlo "a mano".
¿Extendería simplemente la clase A y agregaría una propiedad que le devuelva B? –
Entonces, ¿qué quiere que HashMap no haga? Se puede usar para asignaciones de uno a uno. –
@PeterLawrey es HashMap.contains in java O (1)? –