检查数组列表是否包含给定对象
假设我有这样的类:
class A {
int elementA;
int elementB
}
我也有一个这样的:.ArrayList
ArrayList<A> listObj
如何检查该列表是否包含仅使用 的某些属性的对象?例如,只考虑查找对象是否已经在列表中?A
elementA
newA{elementA}
对于对象,我已经定义了一个方法,其中我只考虑,但这还不够。A
equals
elementA
假设我有这样的类:
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;
}
您可以调整您的需求,但您也可以使用已经存在的强大馆藏库之一,例如commons-collections,Guava或lambdaj。它们都具有迭代和谓词构造,允许您根据某些谓词“浏览”集合。equals
共享资源集合示例:
boolean contains = CollectionUtils.exists(myArrayList, new Predicate<A>() {
public boolean evaluate(A theA) {
// Do the comparison
}
});