salut
j'ai une hashmap, je store des objets de type Id
Id contient un champ de type long et string
seul un de ces deux champs est utilisé selon l'objet qui l'appèle..
type permet de savoir lequel des deux doit être utilisé... c'est une enum
j'ai redéfinie la méthode toString de cet objet
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 public boolean equals(Object o) { if (o == this) { return true; } if (o instanceof Id) { Id other = (Id) o; if (this.longVal != other.longVal) { return false; } if (this.stringVal != null) { if (!this.stringVal.equals(other.stringVal)) { return false; } } if (this.stringVal == null && other.stringVal != null) { return false; } return true; } return false; }
j'ai tenté de redéfinir la méthode hashCode pour cet objet
j'insère 6 valeur et je commence à avoir des écrassements de valeurs
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 public int hashCode() { int hash = 1; if (type.equals(Type.longType)) { hash = new Long(this.longVal).hashCode(); } if (type.equals(Type.StringType)) { hash = new Long(this.stringVal).hashCode(); } return hash; }
une idée pour éviter ce problème?
merci
Partager