J'ai le problème suivant, un HashSet accepte deux éléments identique.
Le code pour mettre le probleme en évidence:
Code :
- Couple c1=new Couple(1,1);
- System.out.println(c1.hashCode());
- Couple c2=new Couple(1,1);
- System.out.println(c2.hashCode());
- System.out.println(c1.equals(c1));
- System.out.println(c1.equals(c2));
- HashSet<Couple> h=new HashSet<Couple>();
- System.out.println(h.add(c1));
- System.out.println(h);
- System.out.println(h.add(c1));
- System.out.println(h);
- System.out.println(h.add(c2));
- System.out.println(h);
|
Qui me renvoie le résultat suivant:
2
2
true
true
true
[(1,1)]
false
[(1,1)]
true
[(1,1), (1,1) |
La class Couple, ou j'ai bien défini la méthode equals() et hashCode():
Code :
- public class Couple {
- /**Attribut repr�sentant l'abscisse*/
- private int x;
- /**Attribut repr�sentant l'ordonn�e*/
- private int y;
- public int hashCode(){
- return this.x+this.y;
- }
- public boolean equals(Couple p){
- return ((this.x==p.x) && (this.y==p.y));
- }
- }
|
Need help, arrachage de cheveux en cours. ![[:blessure] [:blessure]](https://forum-images.hardware.fr/images/perso/blessure.gif)
Message édité par bibiwood le 01-12-2010 à 15:36:13