Probleme avec contains dans un HashSet

Probleme avec contains dans un HashSet - Java - Programmation

Marsh Posté le 12-01-2005 à 16:32:28    

J'ai une classe Point qui implémente des ... points et je construis un ensemble (HashSet) de points que j'apelle 'points'.
 
J'ai un probleme avec la méthode contains:
Si je crée deux points p1 et p2 tels que p1.equals(p2) soit true, que je mets p1 dans mon ensemble points et que je teste si points.contains(p2) j'obtiens false  :pt1cable:.  
 
En bref j'ai :

p1.equals(p2)? true
points.contains(p1)? true
points.contains(p2)? false

Hors ca me semble contraire à ce qui est dis dans la doc à propos de contains:
boolean contains(Object o)
 
    Returns true if this collection contains the specified element. More formally, returns true if and only if this collection contains at least one element e such that (o==null ? e==null : o.equals(e)).

 
Qu'est ce que je comprends mal  :??:  :??:  

Reply

Marsh Posté le 12-01-2005 à 16:32:28   

Reply

Marsh Posté le 12-01-2005 à 17:04:50    

ta methode hashcode est pas ou mal implementée sur ta classe Point


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 12-01-2005 à 17:24:10    

the real moins moins a écrit :

ta methode hashcode est pas ou mal implementée sur ta classe Point


 
ou la methode equals! ;)

Reply

Marsh Posté le 12-01-2005 à 17:31:42    

ben il semble dire qu'elle marche sa methode equals. mais la methode hashcode ne doit pas etre implementée, ou pas correctement (elle *doit* etre "symetrique" -  c quoi le mot déjà? - à equals())


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 12-01-2005 à 18:58:43    

the real moins moins a écrit :

ta methode hashcode est pas ou mal implementée sur ta classe Point


 
En fait il me semble qu'elle est correct  :??: voila ma classe Point
 
...
 
ce qui me donne ->
p1.equals(p2)? true
points.contains(p1)? true
points.contains(p2)? false
p1.hashCode() = 60200
p2.hashCode() = 60200

 
Jsuis perdu  :pt1cable:  :??:  :pt1cable:


Message édité par alexis_timour le 12-01-2005 à 23:21:27
Reply

Marsh Posté le 12-01-2005 à 19:10:34    

la signature d'equals c'est equals(Object o) mais euh jpense pas  que ça aie un rapport là


Message édité par the real moins moins le 12-01-2005 à 19:10:41

---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 12-01-2005 à 19:17:48    

the real moins moins a écrit :

la signature d'equals c'est equals(Object o) mais euh jpense pas  que ça aie un rapport là


 
Bien vu... c'était ca. Je sais pas pq mais en tous cas ca marche maintenant :D
 
Merci bcp!

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed