2017-05-08 1 views
0

J'ai une liste d'objets avec une valeur de position (x, y). Quand je demande si un objet de cette liste est égal à l'objet actuel, la fonction renvoie-t-elle vrai lorsqu'elle se compare à elle-même dans cette liste?Est-ce que les égales s'appliquent sur lui-même lorsqu'on regarde un élément dans une liste?

En gros:

foreach(MyObject o : list){ 
    foreach(MyObject o2 : list){ 
     if(o.equals(o2)) 
      doSomething(); 
    } 
} 

@Override 
public boolean equals(Object obj) 
{ 
    if(obj instanceof MyObject) 
    { 
     MyObject tmp = (MyObject)obj; 
     return this.getPosition().equals(tmp.getPosition()); 
    } 
    return false; 
} 
+0

oui cela dépendrait de la mise en oeuvre d'égaux. –

Répondre

0

Si vous souhaitez que votre boucle pour éviter de retourner un faux positif lorsque l'on compare un élément à lui-même, vous pouvez ajouter à votre condition:

for (MyObject o : list){ 
    for (MyObject o2 : list){ 
     if (o != o2 && o.equals(o2)) 
      doSomething(); 
    } 
} 

Cela garantira que seulement deux instances distinctes (ce qui signifie o et o2 ne se réfèrent pas au même objet) qui sont égales les unes aux autres déclenchera doSomething().

+0

Merci pour votre aide Eran ;-) – Adem