2017-05-08 3 views
0

Ich habe eine Objektliste mit einem Positionswert (x, y). Wenn ich frage, ob ein Objekt dieser Liste gleich dem aktuellen Objekt ist, gibt die Funktion wahr zurück, wenn sie in dieser Liste mit sich selbst übereinstimmt?Wird bei der Suche nach einem Element in einer Liste equals auf sich selbst angewendet?

Grundsätzlich gilt:

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

ja es würde abhängig von der Umsetzung von equals. –

Antwort

0

Wenn Sie Ihre Schleife wollen ein falsch positives zu vermeiden zurückkehrt, wenn sich ein Element zu vergleichen, können Sie Ihre Bedingung hinzu:

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

Dadurch wird sichergestellt, dass nur zwei verschiedene Instanzen (was bedeutet, o und o2 beziehen sich nicht auf das gleiche Objekt), die einander gleich sind, löst doSomething() aus.

+0

Danke für deine Hilfe Eran ;-) – Adem

Verwandte Themen