design... hashmap à 2 clés !? [java] - Java - Programmation
Marsh Posté le 21-08-2002 à 15:41:24
bah...sinon, tu fais un objet avec 2 hashtable..Dans une, tu met une correspondance clé1-> valeur, et dans l'autre clé2->clé1...
Non???
Ou alors...clé1->valeur, et clé2->valeur : tu utilises une référence vers le meêm objet..ca doit pas coûter bien cher, si??
Marsh Posté le 21-08-2002 à 15:43:10
que veux tu dire par hashmap avec 2 clefs ?
une ahshMap sur laquelle tu pourras apeler la méthode get en utilisant soit une clef siot uen autre ou bien simplement une hashmap ou la clef est composée de 2 objets ?
si c'est la deuxeme solution, il faut que tu créé un objet qui contient les 2 autres objets en attribut et sur lequel tu redéfinies les méthodes equals et hashCode
pour equals tu testes l'égalité des 2 attributs (attention aux null) et pour hashCode tu additionne le hashCode des 2 (attention aux null aussi)
Marsh Posté le 21-08-2002 à 15:43:44
la solution de gfive est bonne si c'était le premier cas qui était le bon
Marsh Posté le 21-08-2002 à 15:45:48
benou : en effet ct la 2e soluce.
je vais sans doute faire ça.
je cache le hashcode comme dans String, hein, c utile nan?
j'avoue que mon appelation "hashmap à 2 clés" etait pas claire: il s'agit donc d'une hashmap pour laquelle je veux passer 2 clés à la methode get. Chaque combinaison de 2 clés correspond à une valeur unique. c mieux là?
Marsh Posté le 21-08-2002 à 15:48:46
--greg-- a écrit a écrit : je cache le hashcode comme dans String, hein, c utile nan? |
ben si vraiment tu cherche les perfs oui ... sinon non.
De totue façon, si tes attributs cache déjà leur hashCode, ton hasCode à toi se résumera à une addition ...
Marsh Posté le 21-08-2002 à 17:33:58
un hashmap a deux clés c'est conceptuellement la meme chose
qu'un hashmap a une clé.
de meme qu'un tri sur deux criteres c'est conceptuellement la meme chose qu'un tri a un critere.
LeGreg
Marsh Posté le 21-08-2002 à 17:38:04
parce que, spa pour dire, mais ça n'a rien à voir ce que tu m'as dit
ça a beau etre conceptuellement "la meme chose", ça n'en change pas moins le fait qu'il fallait l'implementer d'une maniere ou d'une autre.
non mais.
Marsh Posté le 21-08-2002 à 17:48:28
Nan je disais ca parce qu'il y a eu un jour une question d'un programmeur qui demandait: "bonjour, je connais qsort (en C) qui sert a faire un tri selon un critere, mais je voudrais faire un tri sur trois criteres A,B,C. Comment faire?"
En fait, le principe du tri a trois criteres c'est juste de changer la fonction de comparaison pour tenir compte des trois A, B et C dans l'ordre. Bref, ca demande pas de reprogrammer qsort ou je ne sais quoi.
Pour les hashmaps c'est la meme chose. Si ta clé est transformée en hashcode, alors deux clés transformé dans un hashcode similaire ca fera la meme chose. Donc pas la peine de reprogrammer la map.
A+
LeGreg
Marsh Posté le 21-08-2002 à 17:50:25
tout à fait
mais je ne veux pas reimplementer hashmap
le seul truc auquel j'avais pas pensé (enfin ... je n'ai pas pensé du tout en fait ), c'était de faire un objet de mes 2 clés au lieu de les concatener.
Marsh Posté le 21-08-2002 à 17:51:48
benou a écrit a écrit : ben si vraiment tu cherche les perfs oui ... sinon non. De totue façon, si tes attributs cache déjà leur hashCode, ton hasCode à toi se résumera à une addition ... |
oh j'avais pas vu ce post, benou.
mais si on y va comme ça, on peut ptetre aussi dire qu'alors je peut tres bien faire ma bete concat de mes deux clés, nan?
bon ok, une concat c pas trop pareil qu'une addition d'entiers...
et puis c pas bo.
bon
je ferai mon tit objet ce soir si je lui trouve un nom
Marsh Posté le 21-08-2002 à 18:04:07
perso, j'ai encore jamais fait de cahching de hashCode ...
mais bon, c'est pas grand chose à faire, alors si ca te dit, lache toi !
Marsh Posté le 21-08-2002 à 18:04:54
--greg-- a écrit a écrit : je ferai mon tit objet ce soir si je lui trouve un nom |
DoubleKey !!!
Marsh Posté le 21-08-2002 à 18:21:50
HeavyHashMap (c'est lourd deux clés)
benou > c'est quoi ce mot : cahching ?
Marsh Posté le 21-08-2002 à 18:33:28
Cherrytree a écrit a écrit : benou > c'est quoi ce mot : cahching ? |
c'est caching écrit par un gars atteint du cancer des doigts.
Marsh Posté le 21-08-2002 à 18:34:00
Cherrytree a écrit a écrit : HeavyHashMap (c'est lourd deux clés) |
PorteClefs tant que t'y es !
Marsh Posté le 21-08-2002 à 18:34:55
Ben tu crée 2 Hashmap!
...Avec une petite classe pour gerer la synchro des deux!
Marsh Posté le 21-08-2002 à 18:41:07
therier a écrit a écrit : Ben tu crée 2 Hashmap! ...Avec une petite classe pour gerer la synchro des deux! |
heho, le rang du fond, on suit un peu là. je vous ai vous dormir.
Marsh Posté le 21-08-2002 à 18:41:18
benou a écrit a écrit : PorteClefs tant que t'y es ! |
excellent
Marsh Posté le 21-08-2002 à 18:42:42
--greg-- a écrit a écrit : heho, le rang du fond, on suit un peu là. je vous ai vous dormir. |
Mais...heu!!!! J'ai pas tout lu... ça c'est vu?!?
Marsh Posté le 21-08-2002 à 18:43:20
therier a écrit a écrit : Mais...heu!!!! J'ai pas tout lu... ça c'est vu?!? |
non non pas du tout
Marsh Posté le 21-08-2002 à 20:56:56
benou a écrit a écrit : PorteClefs tant que t'y es ! |
Je préfère OuvreBoite, personnellement.
Marsh Posté le 21-08-2002 à 22:37:05
Map2000
edit : celui qui trouve le jeu de mot a la con, remporte toute mon estime
Marsh Posté le 21-08-2002 à 22:39:14
HappyHarry a écrit a écrit : Map2000 edit : celui qui trouve le jeu de mot a la con, remporte toute mon estime |
on se calme les enfants
j'ai nommé mon objet clé en fonction du bidule ds lequel je le met wala
Marsh Posté le 21-08-2002 à 23:19:03
--greg-- a écrit a écrit : on se calme les enfants j'ai nommé mon objet clé en fonction du bidule ds lequel je le met wala |
CléEnFonctionDuBiduleDansLequelJeLeMetWala ?
Pourquoi pas, après tout.
Marsh Posté le 21-08-2002 à 23:21:16
HappyHarry a écrit a écrit : Map2000 edit : celui qui trouve le jeu de mot a la con, remporte toute mon estime |
Désolé, je vois pas.
--greg-- > Que dis tu de DoubleInCaseIForgotTheKeysForMyMap ?
Marsh Posté le 22-08-2002 à 00:15:53
ou bien
RahPutainJaiPaumeMesClesSiSeulementJavaisFaitUnDoubleInCaseIForgotTheKeysForMyMap
Marsh Posté le 22-08-2002 à 05:41:34
HappyHarry a écrit a écrit : ou bien RahPutainJaiPaumeMesClesSiSeulementJavaisFaitUnDoubleInCaseIForgotTheKeysForMyMap |
Marsh Posté le 21-08-2002 à 15:35:57
En admettant que j'en ai besoin, comment me conseilleriez-vous de remplir et consulter une hashmap avec 2 clés ?
Pour l'instant je concatene clé1+"~"+clé2 , en etant assuré que "~" ne sera jamais dans clé1 ni clé2, mais ça suxx des ours.
(mes clés et leurs valeurs ne sont que des strings)
Que faire? Lire l'article de benou sur les hashcode?