Méthode contains dans Collection
Bonjour,
J'ai un problème dans l'utilisation de la méthode "contains" dans une collection.
D'après la documentation
Citation:
boolean contains(Object o)
Returns true if this set contains the specified element. More formally, returns true if and only if this set contains an element e such that (o==null ? e==null : o.equals(e)).
Dans mon exemple, j'ai créé une classe "Objet" avec la méthode equals
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
|
public class Objet {
public int t1;
public int t2;
public Objet(int t1, int t2)
{
this.t1=t1;
this.t2=t2;
}
public boolean equals(Objet o)
{
return (this.t1==o.t1)&&(this.t2==o.t2);
}
} |
Dans mon test
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
| import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
public class Test {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Set<Objet> listObjets= new HashSet<Objet>();
Objet o1=new Objet(1,2);
Objet o2=new Objet(2,1);
Objet o3=new Objet(5,4);
Objet o4=new Objet(1,2);
listObjets.add(o1);
listObjets.add(o2);
listObjets.add(o3);
if (listObjets.contains(o4))
{
System.out.println("Yes");
}else
{
System.out.println("No");
}
}
} |
On voit que l'objet o4 est identique par rapport à l'objet o1 d'après la méthode equals que j'ai défini.
Par contre, quand je fais
Code:
listObjets.contains(o4)
Le système retourne faux!
Pourriez vous m'aider?
Merci
Implémentation du hashCode
Merci de vos réponses.
Par contre, ma question initiale est remmenée à l'utilisation de la fonction hashCode.
J'ai implémenter la fonction hashCode
Code:
1 2 3 4
| public int hashCode()
{
return t1+t2;
} |
Mais ça ne marche pas.
Dans mon cas, qu'est ce que vous me conseillez pour définir la méthode hashCode?
Merci