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

 


Dernière réponse
Sujet : metode hashCode de String ... je comprend pas !
benou vraiment ... personne a d'idée ???
ils devaient bien avoir une raison les dev de chez sun !!

Votre réponse
Nom d'utilisateur    Pour poster, vous devez être inscrit sur ce forum .... si ce n'est pas le cas, cliquez ici !
Le ton de votre message                        
                       
Votre réponse


[b][i][u][strike][spoiler][fixed][cpp][url][email][img][*]   
 
   [quote]
 

Options

 
Vous avez perdu votre mot de passe ?


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

DarkLord a écrit a écrit :

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




:??: hein ?

benou

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 ...

darklord pas bete. De plus synchronized sur une String ... bof
alien_nan 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 :)
benou 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 ?


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)