Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1829 connectés 

 


 Mot :   Pseudo :  
 
 Page :   1  2  3  4  5
Page Suivante
Auteur Sujet :

hashCode, qui s'en sert ?

n°837266
Giz
Posté le 31-08-2004 à 00:17:43  profilanswer
 

Reprise du message précédent :

nraynaud a écrit :

non, TU es un boolay, ce qui n'est pas le cas de tout le monde ici.  
 
Et tu es un boolay non pas parce que tu débutes, mais bien parce que tu conteste ce que te disent des gens largement expérimenté dans le domaine que tu abordes, et que tu ne fais la différence entre "ça existe" (le + pour les chaines) et "il faut l'utiliser tout le temps" (ce qui n'est absolument pas le cas pour +, il faut l'utiliser avec prudence).
 
quand Benou te dit un truc sur la complexité de hashCode ou toString(), il a largement raison. Il a passé du temps à pondre et commenter des pavés, et tu n'écoutes toujours pas ses conseils avisés. Il est pourtant pas en train de te parler de collaborations complexes entre objets, mais bêtement des fonctions de Object, qui répondent aux besoins les plus basiques de java.
 
quand benou te propose (fort à-propos) un générateur congruant pour générer tes hash, tu lui réponds (à peu près) que générer le toString() puis faire le hashCode (qui est aussi un générateur congruant) de la chaine est plus rapide ... Si tu comprends rien à la complexité et aux performances, écoute-le, il connait lui ! Je prends la discussion en cours, je vois des concaténations douteuses (que Benou avait déjà soulignées d'ailleur), je file un topic que j'avais fait sur le sujet, lis-le pose des questions sur l'articulation de totu ça, mais ne vient pas sortir un bout de javadoc hors-contexte.


 

Giz a écrit :


oui c'est vrai. Maintenant est-ce vraiment plus performant ?...sachant que je veux que la proba que deux tableaux différents aient le même hashCode soit faible . Si c'est juste pour éviter un parcours de tableau, alors par rapport à mon prog, le temps perdu est négligeable  
Sinon, perso, j'essaie d'utiliser les fonctions de la bibliothèque autant que possible (si ce n'est pas pénalisant bien sûr


 
J'en conclus que tu ne comprends pas le français ? ou que tu es con ? ... ou les 2 ? :D


---------------
Asus P5Q Pro | C2D E8400 3GHz@4GHz + Noctua NH-C12P | 2x2Go Patriot Extreme PC-8500 | GeForce GTX 460@Stock 1Go GLH | Crucial SSD M4 64Go Sata3
mood
Publicité
Posté le 31-08-2004 à 00:17:43  profilanswer
 

n°837280
nraynaud
lol
Posté le 31-08-2004 à 00:25:47  profilanswer
 

tu t'enfonces.


---------------
trainoo.com, c'est fini
n°837284
uriel
blood pt.2
Posté le 31-08-2004 à 00:28:23  profilanswer
 

[:petrus75] sympa ici, je m'installe...


---------------
IVG en france
n°837287
nraynaud
lol
Posté le 31-08-2004 à 00:31:35  profilanswer
 

cool tu va voir, y'a un mec qui fait pas la différence entre un parcours d'un tableau de n éléments et n allocations de tableaux + n^2 parcours.


---------------
trainoo.com, c'est fini
n°837303
Giz
Posté le 31-08-2004 à 00:45:50  profilanswer
 

nraynaud a écrit :

cool tu va voir, y'a un mec qui fait pas la différence entre un parcours d'un tableau de n éléments et n allocations de tableaux + n^2 parcours.


 
toi alors t'interprètes les choses vraiment à ta façon... :pfff:


---------------
Asus P5Q Pro | C2D E8400 3GHz@4GHz + Noctua NH-C12P | 2x2Go Patriot Extreme PC-8500 | GeForce GTX 460@Stock 1Go GLH | Crucial SSD M4 64Go Sata3
n°837304
veryfree
Posté le 31-08-2004 à 00:46:59  profilanswer
 

uriel a écrit :

[:petrus75] sympa ici, je m'installe...


 
 [:moazaaa]

n°837305
the real m​oins moins
Posté le 31-08-2004 à 00:47:06  profilanswer
 

c pas encore fini ??


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°837357
Cherrytree
cn=?
Posté le 31-08-2004 à 08:05:13  profilanswer
 

Giz a écrit :

Les dessous de Java j'ai pas le temps de l'étudier en long en large et en travers (si faudrait faire ça pour tout les langages ca serait la mort).  :sarcastic: .


Si tu persévères dans l'info, souviens-toi toujours du morceau de ton post que je cite.
 
Mon intuition est que tu dresses une barrière mentale très intéressante, qui caractérise l'implication du programmmeur dans son travail (au sens du temps qu'il consacre à la programmation), selon qu'il reste derrière, simple utilisateur d'API, ou qu'il la franchit, et cherche à comprendre ce qu'il se passe en arrière plan.
 
En fait quand tu cherches à améliorer la performance de ton code, il y a souvent des fois où tu te retrouves à décompiler une classe pour connaître des détails sur son implémentation. Le sujet de la performance dépasse largement le cadre de ce post ; j'ajoute une dernière chose à ce propos, afin de circonscrire le couple {décompilation, performance} : l'amélioration du code ne passe que rarement par la décompilation du code tiers. Heureusement.


---------------
Le site de ma maman
n°837360
Cherrytree
cn=?
Posté le 31-08-2004 à 08:09:16  profilanswer
 

Giz a écrit :

J'en conclus que tu ne comprends pas le français ? ou que tu es con ? ... ou les 2 ? :D


Bon ben, 1 partout. [:itm]


---------------
Le site de ma maman
n°840700
patachou
Posté le 03-09-2004 à 01:54:41  profilanswer
 

Bon ca a l'air super interressant ce topic là, moi j'avais une question mais bonnn, heuu je me lance alors...
J'ai lu un peu les premiere page du topic, j'ai beaucoup mieucx compris comment marchait les tables de hash (merci Mr Benou ;)) mais j'ai quand meme une interrogation. Imaginons que la fonction hashcode porte sur un des attibut qu'on insere un objet dans la hash. Ensuite quelque part, on change la valeur de l'attribut et on le recherche l'objet dans la hash... On le retrouve plus ????
ex :  
un objet dont le hashCode renvoi 1 (pour un certain attribut)
On l'insere dans une hashmap. Il va etre rangé a l'index 1.
On modifie l'attribut -> hashcode renvoi 2 maintenant
On recherche l'objet dans la map avec l'attribut modifié...
 
L'objet recherché va etre chercher à l'index 2, exact ?? Donc il ne sera jamais trouvé ?

mood
Publicité
Posté le 03-09-2004 à 01:54:41  profilanswer
 

n°840704
nraynaud
lol
Posté le 03-09-2004 à 02:12:23  profilanswer
 

patachou a écrit :

Bon ca a l'air super interressant ce topic là, moi j'avais une question mais bonnn, heuu je me lance alors...
J'ai lu un peu les premiere page du topic, j'ai beaucoup mieucx compris comment marchait les tables de hash (merci Mr Benou ;)) mais j'ai quand meme une interrogation. Imaginons que la fonction hashcode porte sur un des attibut qu'on insere un objet dans la hash. Ensuite quelque part, on change la valeur de l'attribut et on le recherche l'objet dans la hash... On le retrouve plus ????
ex :  
un objet dont le hashCode renvoi 1 (pour un certain attribut)
On l'insere dans une hashmap. Il va etre rangé a l'index 1.
On modifie l'attribut -> hashcode renvoi 2 maintenant
On recherche l'objet dans la map avec l'attribut modifié...
 
L'objet recherché va etre chercher à l'index 2, exact ?? Donc il ne sera jamais trouvé ?

tout juste.
Une petite info connexe : en math, tous les "objets" sont immuables, on peut donc faire des preuves facilement. Dans la vraie vie, on a des objets qui se modifient, il faut donc "faire gaffe" à ce qu'on fait de l'objet pour respecter les preuves calculées avec un modèle plus simple.


---------------
trainoo.com, c'est fini
n°840754
benou
Posté le 03-09-2004 à 09:18:05  profilanswer
 

patachou a écrit :

L'objet recherché va etre chercher à l'index 2, exact ?? Donc il ne sera jamais trouvé ?


tout à fait.  
Donc 2 solutions : soit tu ne modifies pas les objets dont tu te sers comme clef (ou bien il ne faut pas que ca ait d'influence sur le hashcode), soit tu retire l'objet de la map avant et tu le remet après la modif.
 
Mais bon, je ne me souviens pas de m'etre servit d'un objet muable en tant que clef ... ca doit être plutot rare comme besoin ...
remarque, ca peut déjà arriver plus souvent avec un HashSet ... donc oui, il faut faie gaffe !


---------------
ma vie, mon oeuvre - HomePlayer
n°840764
pains-aux-​raisins
Fatal error
Posté le 03-09-2004 à 09:28:26  profilanswer
 

[:drapal]
Peut me faire gagner du temps un de ces quatre
[:pains-aux-raisins]

n°840816
nraynaud
lol
Posté le 03-09-2004 à 10:24:58  profilanswer
 

+1 sur benou.
 
Ceci c'est une règle générale de conception, on ne fait pas d'objets modifiable sauf besoin. On doit toujours chercher à avoir des objets immuables et les convetir en objets modifiables en cas de besoin (souvent pour des raisons de perfs). De même on doit faire varier un minimum de paramètre quand l'objet est modifiable (des objets "peu modifiables" ).
 
La raison est celle que j'ai donnée plus haut : pas de surprise avec un objet qui ne se modifie pas. Concernant, les perfs, si vous avez du multithread, avoir des objets immuables rend la synchronisation plus simple. Vous pouvez aussi gagner du temps en ayant des caches de résultat calculés dans certains objets (objets extérieurement immuables, mais intérieurement modifiables, attention à la contention sur la synchronisation du cache).
 
 
Bref, le "bon ordre" c'est : on fait des objets immuables et on les rend modifiables à la demande.


---------------
trainoo.com, c'est fini
n°1580048
Fotoweb
Posté le 27-06-2007 à 17:36:14  profilanswer
 

pourriez vous me donner un exemple de problème qui peut survenir lorsque pour 2 objets identiques ( equals ) j'ai 2 hashCodes différents ?
Je vois partout ca peut faire des trucs bizarres, ca ne respecte pas le contrat ... Mais plus précisément quel cas peut arriver ?

n°1586580
TheRom_S
Posté le 14-07-2007 à 17:11:15  profilanswer
 

ben comme expliqué précédemment, dans le cas d'une classe qui ne redéfinit que le equals genre :

Code :
  1. public class Pomme {
  2.     private String nom;
  3.     public Pomme(String _nom) {
  4.         this.nom = _nom;
  5.     }
  6.     public boolean equals(Object o) {
  7.         try {
  8.             Pomme autre = (Pomme)o;
  9.             return this.nom == autre.nom;
  10.         }
  11.         catch (ClassCastException cce) { return false; }
  12.     }
  13. }

Voilà dans ce cas, deux pommes de même nom sont considérées égales car équivalentes (après tout une pomme en vaut bien une autre).
Par contre le hashcode va être celui de Object donc l'emplacement mémoire donc problème ... [:spamafote]

n°1589322
jyles
Posté le 20-07-2007 à 13:40:25  profilanswer
 

Sur ce sujet, une seule référence :
 
http://developer.java.sun.com/deve [...] apter3.pdf
 
Une seule implémentation :
 
http://jakarta.apache.org/commons/ [...] ilder.html
http://jakarta.apache.org/commons/ [...] ilder.html
 
Ceux qui font autrement sont soit stupides, soit aiment réinventer la roue pour rien, soit ont des besoins extrêmement spécifiques (mais franchement j'ai du mal à voir lesquels ;))

n°1932095
TarHack
Hack For Ever !
Posté le 15-10-2009 à 15:48:49  profilanswer
 

Cherrytree a écrit :

Heu, je suis confronté à ce chose étrange dans un source. J'ai lu la doc' là-dessus, mais ça m'a l'air un peu space comme engin. Y en a qui se servent de ça ? Dans quels cas ça se justifie-t-il ?


Oui moi je m'en sert

n°1932098
Taiche
(╯°□°)╯︵ ┻━┻
Posté le 15-10-2009 à 15:50:59  profilanswer
 

[:implosion du tibia]


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
n°1932102
masklinn
í dag viðrar vel til loftárása
Posté le 15-10-2009 à 15:54:26  profilanswer
 

Encore un topic R'lyeh [:bien]


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°1932161
pataluc
Posté le 15-10-2009 à 17:18:36  profilanswer
 

masklinn a écrit :

Encore un topic R'lyeh [:bien]


soyez pas vaches c'est son premier post!  :D

n°1932165
Taiche
(╯°□°)╯︵ ┻━┻
Posté le 15-10-2009 à 17:22:54  profilanswer
 

De qualité, assurément [:cosmoschtroumpf] "Je remonte un topic vieux de 7 ans qui a pas vu la lumière depuis 2 juste pour dire 'me too'", franchement belle perf [:doc petrus]


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
mood
Publicité
Posté le   profilanswer
 

 Page :   1  2  3  4  5
Page Suivante

Aller à :
Ajouter une réponse
 

Sujets relatifs
question de newbie : a quoi sert la fonction break?[HTML, JS] Heu, ca sert à quoi le HTML 4.01, à part renvoyer aux CSS2
[XML] SVG : qui s'en sert ?A quoi sert ma BdD localhost si j'en ai une sur Multimania?
[mysql]a koi sert l'attribut binary des chps mysql ?[VB] A quoi sert ....
[PHP] disk_total_space : undefined function... quelqu'un s'en sert ?Trouver une bonne formule de HashCode
a koi sert le fichier MSCVRT.DLL ki se trouve dans system32?a quoi sert une base de donnee pour un site
Plus de sujets relatifs à : hashCode, qui s'en sert ?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR