101 votes

Que Java a un HashMap avec recherche inversée ?

J’ai des données organisées en nature d’un format de clé « clé », plutôt que de « key-value ». C’est comme une table de hachage, mais j’aurai besoin d’o (1) la recherche dans les deux sens. Y at-il un nom pour ce type de structure de données, et est quelque chose comme ceci inclus dans les bibliothèques standard de Java ? (ou peut-être Apache Commons ?)

Je pourrais écrire ma propre classe qui utilise essentiellement deux cartes en miroir, mais je ne serait pas plutôt réinventer la roue (si cela existe déjà, mais je cherche tout simplement pas le bon terme).

110voto

uckelman Points 7228

Il n’y a aucune telle classe dans l’API Java. La classe Apache Commons que vous voulez va être une des implémentations de BidiMap.

Comme mathématicien, j’appellerais ce genre de structure une bijection.

79voto

ColinD Points 48573

Outre Apache Commons, goyave possède également un BiMap.

21voto

GETah Points 10887

Voici une classe simple, j’ai utilisé pour y parvenir (je ne voulais pas d’avoir encore une autre tierce partie dépendance). Elle n’offre pas toutes les fonctionnalités disponibles dans les cartes, mais c’est un bon début.

10voto

rsp Points 14367

Si aucun collisions se produisent, vous pouvez toujours ajouter les deux directions à la table de hachage même  :-)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X