2017-05-08 52 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

相關問題