假设我有这样的课:
class A {
int elementA;
int elementB
}
我也有一个像这样的
ArrayList
:ArrayList<A> listObj
。如何仅使用
A
的某些属性检查该列表是否包含对象?例如。仅考虑elementA
来查找对象newA{elementA}
是否已在列表中?对于对象
A
,我定义了一个equals
方法,其中仅考虑elementA
,但这还不够。 最佳答案
List#contains()方法使用equals()
方法评估两个对象是否相同。因此,您需要在您的类equals()
中覆盖A
,还需要覆盖hashCode()
。
@Override
public boolean equals(Object object)
{
boolean isEqual= false;
if (object != null && object instanceof A)
{
isEqual = (this.elementA == ((A) object).elementA);
}
return isEqual;
}
@Override
public int hashCode() {
return this.elementA;
}