我有一个 Detail class
,我正在为 ArrayList<Detail>()
添加详细对象。每个Detail
对象都有不同的行号。我想要的是比较详细对象的某些 propeties ,记录消息如果在列表中找到了重复,并且>删除重复>从列表中。我在细节类中覆盖了 equals()
方法,但无法弄清楚下一步如何做。
@Override
public boolean equals(Object obj) {
boolean isEqual = false;
if(obj instanceof Detail){
if(this.getInsurancePolicyNo().equals(((Detail) obj).getInsurancePolicyNo()) && this.getCertificateNo().equals(((Detail) obj).getCertificateNo()) && this.getInsuredSurname().equals(((Detail) obj).getInsuredSurname()) && this.getInsuredOtherName().equals(((Detail) obj).getInsuredOtherName()) && this.insuredDOB.equals(((Detail) obj).getInsuredDOB())){
isEqual = true;
}
}
return isEqual;
}
您需要使用所有元素,然后使用add
方法将它们添加到Set<Details>
,一个
如果add
方法在插入Details
对象时返回false
,则意味着Detail
对象是重复的,您可以 log> log it
将所有项目添加到Set
之后,Set
包含 unique Details
Elements
注意:此解决方案要求您的Details
类覆盖equals
方法
编辑:如果您希望在Details
的完全不同的属性上找到重复,而不是您在equals
中使用的副本,则首先
- 定义考虑这些属性的自定义
Comparator
- 使用创建的
Comparator
创建 - 现在
TreeSet
将使用传递的Comparator
的compareTo
方法找到重复项
TreeSet
有关更多信息,请阅读TreeSet
的文档,以查找其如何查找重复/equality