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

はい、これはequalsの実装に依存します。 –

答えて

0

あなたが自分自身に要素を比較するとき、あなたはあなたの条件に追加することができます偽陽性を返す避けるために、あなたのループを希望する場合:

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

このことだけを保証します互いに等しい2つの異なるインスタンス(つまり、oo2は同じオブジェクトを参照しません)は、doSomething()をトリガーします。

+0

あなたの助けてくれてありがとうございます;-) – Adem

関連する問題