假设我有这样的课:

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

09-27 23:00