-
MultiKeyMap ou TreeMap
Bonjour à tous,
Un soucis de conception, en effet je travaille actuellement sur un projet de transcodage. En gros en fonction de diverses clés je cherche une valeur.
Voila tout se complique car je ne vois pas bien comment implémenter cela en Java. Je peux faire des trucs de bricolos : des HashMap de Hasmap etc... :aie:. Mais l'idée ne me plait pas.
Voici mon problème :
Exemple de Table
Key 1 | Key 2 | Key 3 | Valeur
A * * 1
T TA TTA 2
T TB TTB 3
T TB TTC 4
T TB * 5
etc...
Donc on voit bien ici que pour trouver la valeur, je dois comparer plusieurs clé, voir également une valeur "tout" représenté par "*".
J'ai trouvé la classe MultiKeyMap provenant de la librairie Appache. Sinon je me demande si l'utilisation d'un TreeMap ne pourrait pas répondre à mon besoin ?
Avez vous déjà été confronté à ce problème ? une idée ?
-
Salut,
Pourquoi ne pas créer une classe contenant tes 3 clés, une "super" clé. Tu y redéfinis les méthodes equals et hashCode en fonction du type d'unicité que tu désires.
Enfin, tu fais une HashMap de ta classe et de ta valeur associée.
Basiquement tu encapsules tes clés dans une classe servant de clés.
-
Pas con, j'y avais pas songé.
Bon je vais partir la dessus.
Merci
-
Ouais, enfin, ça permettra pas de faire facilement les jokers *
Pour un truc comme ça, je ne crois pas qu'il y ait des outils tout faits. Enfin si : ça s'appelle une base de données.
L'approche Map de Map de Map n'est pas si mauvaise. Sinon, faire soi-même une base de donnée triviale : une Map<Key, Set<Valeur>> par clé, et satisfaire les contraintes à base de retainAll()