Bonjour à tous,

J'ai un petit soucis avec une ArrayList<Coordinate>. Je définis la classe Coordinate de la façon suivante :
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 Coordinate{
 
	public int x;
	public int y;
 
	public Coordinate(int i, int j){
		x = i;
		y = j;
	}
 
	public Coordinate(Coordinate c){
		x = c.x;
		y = c.y;
	}
 
}
J'ai donc une ArrayList<Coordinate> qu'on appelera "alc". Je souhaite pouvoir savoir rapidement si pour deux entier i et j donnés, il existe dans "alc" un élément "c" tel que, c.x = i et c.y = j.

Je préférerais éviter de parcourir l'ensemble de l'ArrayList pour faire cela (je dois en fait afficher un grand tableau dans une JTable et pour chaque case correspondant à une des coordonnées de l'ArrayList, il y a un traitement spécial). J'ai donc pensé à utiliser la fonction "contains" de la classe ArrayList. Mais comme les références des objets ne sont pas les mêmes mon test me renvoie toujours false :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
Coordinate c1 = new Coordinate(1, 1);
Coordinate c2 = new Coordinate(1, 1);
 
ArrayList<Coordinate> al = new ArrayList<Coordinate>();
al.add(c1);
 
System.out.println(al.contains(c2)); // Affiche "false"
Auriez-vous une solution à mon problème ? Suis-je obligé de parcourir toutes la liste ?

Merci d'avance.