Java 当查看列表中的元素时,相等是否应用于自身?
我有一个带有位置值(x,y)的对象列表。当我询问此列表中的一个对象是否等于当前对象时,当与此列表中的自身进行比较时,函数是否返回true 基本上:Java 当查看列表中的元素时,相等是否应用于自身?,java,list,object,equals,Java,List,Object,Equals,我有一个带有位置值(x,y)的对象列表。当我询问此列表中的一个对象是否等于当前对象时,当与此列表中的自身进行比较时,函数是否返回true 基本上: foreach(MyObject o : list){ foreach(MyObject o2 : list){ if(o.equals(o2)) doSomething(); } } @Override public boolean equals(Object obj) { if(o
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();
}
}
这将确保只有两个彼此相等的不同实例(即
o
和o2
不引用同一对象)将触发doSomething()
是,这取决于equals的实现。感谢您的帮助,Eran;-)