Bonjour à tous,
je débute dans le Java, j'ai un exercice tout simple.
J'ai une classe Point, je fais un ArrayList de Point.
J'appele la méthode indexof, je sais que cette méthode fait appel à equals, mais je voudrais qu'elle compare le contenu des points et non les référence, j'ai donc surchargé equals(), dans ma classe Point :
L'appel :
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 public class Point { private int x; private int y; ... public boolean isSameAs(Point p){ return ((this.x==p.x)&&(this.y==p.y)); } @Override public boolean equals(Object p){ System.out.println("Compare bien le contenu maintenant !"); return this.isSameAs((Point)p); }
Or je n'obtient pas la bonne position de mes objets :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 Point p=new Point(1,2); Point p2=p; Point p3=new Point(1,2); ArrayList<Point> list = new ArrayList<Point>(); list.add(p); list.add(p2); list.add(p3); System.out.println("Position de p2 dans list : "+list.indexOf(p2)); System.out.println("Position de p3 dans list : "+list.indexOf(p3)); System.out.println("Object.equals() est appelé par indexOf()");
Il me manque quelque chose apparement mais quoi ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 Compare bien le contenu maintenant ! Position de p2 dans list : 0 Compare bien le contenu maintenant ! Position de p3 dans list : 0 Object.equals() est appelé par indexOf()![]()
Partager