Hashcode [Résolu]

Signaler
Messages postés
120
Date d'inscription
dimanche 4 avril 2010
Statut
Membre
Dernière intervention
24 septembre 2012
-
Messages postés
120
Date d'inscription
dimanche 4 avril 2010
Statut
Membre
Dernière intervention
24 septembre 2012
-
Bonjour
je veux savoir es que cette méthode hashcode et correcte
je suis débutant
class Dog{
String name,rrr;
int age,id;
Cat prenom;

public int hashCode() {return name.length()+rrr.length()+age+id+prenom.hashCode(); }
}




NB: Cat et une classe

merci

8 réponses

Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
97
Salut,

Absolument pas : si tu as name et rrr de même longueur mais de contenu différent, il te générera le même hascode.

Si tu utilises eclipse, tu peux le générer automatiquement, voici ce qu'il génère :
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + age;
result = prime * result + id;
result prime * result + ((name null) ? 0 : name.hashCode());
result prime * result + ((prenom null) ? 0 : prenom.hashCode());
result prime * result + ((rrr null) ? 0 : rrr.hashCode());
return result;
}

______________________________________

AVANT de poster votre message, veuillez lire, comprendre, et appliquer notre réglement
Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
97
Salut,

Ben si la variable est nulle, alors elle ne rentre pas en compte dans le calcul du hashcode, sinon, il utilise le hashcode généré par la classe String qu'il ajoute au hashcode déjà généré.
______________________________________

AVANT de poster votre message, veuillez lire, comprendre, et appliquer notre réglement
Messages postés
120
Date d'inscription
dimanche 4 avril 2010
Statut
Membre
Dernière intervention
24 septembre 2012

merci
Messages postés
120
Date d'inscription
dimanche 4 avril 2010
Statut
Membre
Dernière intervention
24 septembre 2012

esque vous pouvez m'expliquer le ligne
((name == null) ? 0 : name.hashCode());

merci
Messages postés
120
Date d'inscription
dimanche 4 avril 2010
Statut
Membre
Dernière intervention
24 septembre 2012

merci mon chef
Messages postés
120
Date d'inscription
dimanche 4 avril 2010
Statut
Membre
Dernière intervention
24 septembre 2012

je suis très desoler pour le derangement si i j écrire commen ca
esque valable


public int hashcode(){return id+age+nom.hashCode()+prenom.hashCode()+rrr.hashCode(); }


merci
Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
97
Non c'est pas valable : une simple addition ne suffit pas, regarde le code que je t'ai fournit, c'est la façon de faire : ajouter les hashcode en les multipliant à un nombre premier pour faire un filtre (comme un filtre binaire).


Salut,
______________________________________

AVANT de poster votre message, veuillez lire, comprendre, et appliquer notre réglement
Messages postés
120
Date d'inscription
dimanche 4 avril 2010
Statut
Membre
Dernière intervention
24 septembre 2012

Merci mon chef