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

  FORUM HardWare.fr
  Programmation

  metode hashCode de String ... je comprend pas !

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

metode hashCode de String ... je comprend pas !

n°184685
benou
Posté le 28-07-2002 à 14:44:03  profilanswer
 

salut tout le monde.
 
Je viens de regarder le code source de la classe String et y a un truc que je capte pas dans l'implémentation de la méthode HashCode.
 
voici son code (jdk 1.3) :  

Code :
  1. public int hashCode() {
  2. int h = hash;
  3. if (h == 0) {
  4.     int off = offset;
  5.     char val[] = value;
  6.     int len = count;
  7.     for (int i = 0; i < len; i++)
  8.  h = 31*h + val[off++];
  9.     hash = h;
  10. }
  11. return h;
  12.     }


 
la question que je me pose c'est : à quoi ca sert de déclarer les variables val et len ??? pourquoi ne pas avoir tout simplement utilisé les variables value et count ??? Les objets String sont immuables, donc de toute façon les valeurs de ces variables ne changerons pas.  
Doit bien y avoir une raison ...
 
pkoi ne pas avoir écrit tout simplement ca :  

Code :
  1. public int hashCode() {
  2. int h = hash;
  3. if (h == 0) {
  4.     int off = offset;
  5.     for (int i = 0; i < count; i++)
  6.  h = 31*h + value[off++];
  7.     hash = h;
  8. }
  9. return h;
  10.     }


 
alors, y a un truc bête qui m'échappe ?

mood
Publicité
Posté le 28-07-2002 à 14:44:03  profilanswer
 

n°184689
alien_nan
Posté le 28-07-2002 à 15:41:31  profilanswer
 

Allez, je prends un risque :
 
si tu as une autre classe qui appelle cette methode pendant qu'il est en train de calculer ta hashcode, n'y a t-il pas un risque, meme infime, que value puisse changer ?  
 
donc a ce moment la, en le stockant dans une variable locale, tu n'as plus le risque de voir ta variable value changer.
 
Et un essai, un :)

n°184693
darklord
You're welcome
Posté le 28-07-2002 à 16:06:56  profilanswer
 

pas bete. De plus synchronized sur une String ... bof


---------------
Just because you feel good does not make you right
n°184716
benou
Posté le 28-07-2002 à 17:28:05  profilanswer
 

alien_nan a écrit a écrit :

Allez, je prends un risque :
 
si tu as une autre classe qui appelle cette methode pendant qu'il est en train de calculer ta hashcode, n'y a t-il pas un risque, meme infime, que value puisse changer ?  
 
donc a ce moment la, en le stockant dans une variable locale, tu n'as plus le risque de voir ta variable value changer.
 
Et un essai, un :)




ben non ... pourquoi ca changerait ? String est immuable !
et puis en plus, si value change, val va changer aussi puiqu'ils pointent tous les deux sur le même objet ...

n°184717
benou
Posté le 28-07-2002 à 17:28:21  profilanswer
 

DarkLord a écrit a écrit :

pas bete. De plus synchronized sur une String ... bof




:??: hein ?

n°184741
benou
Posté le 28-07-2002 à 18:51:19  profilanswer
 

vraiment ... personne a d'idée ???
ils devaient bien avoir une raison les dev de chez sun !!


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation

  metode hashCode de String ... je comprend pas !

 

Sujets relatifs
hashCode, qui s'en sert ?[PHP] Expressions régulières je comprend rien!!! ;-)
cast int->string[PHP] forcer une variable a etre une string de 4 caracteres
VC++ Question de newbie sur le stringLes exceptions, y a une truc que j'comprend pas.
COleVariant en String[java] récupérer une String à partir d'un InputStream...
erreur en Vbscript je ne comprend pas du tout pourquoi!![open gl] je ne comprend pas mes erreurs pour ma geosphère (tjs pas)
Plus de sujets relatifs à : metode hashCode de String ... je comprend pas !


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