2017-05-08 24 views
0

我有一个位置值(x,y)的对象列表。当我询问这个​​列表的一个对象是否等于当前对象时,该函数在此列表中比较自己时是否返回true?当在列表中查找元素时,equals是否适用于本身?

基本上是:

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

是的,这取决于等于的执行。 –

回答

0

如果你希望你的循环,以避免元素与自己进行比较时,返回一个假阳性,您可以添加到您的条件:

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

这将确保只两个不同的实例(意味着oo2不指向相同的对象)彼此相等会触发doSomething()

+0

感谢您的帮助Eran ;-) – Adem

相关问题