在列表中查找元素时,equals 是否适用于自身?

Does equals apply on itself when looking an element in a list?

我有一个带有位置值 (x, y) 的对象列表。当我询问此列表的对象是否等于当前对象时,函数 return 在与此列表中的自身进行比较时是否为真?

基本上:

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;
}

如果您希望循环在将元素与自身进行比较时避免返回误报,您可以添加条件:

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

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