我有一个Detail class
,我正在向ArrayList<Detail>()
添加详细信息对象。每个Detail
对象都有不同的行号。我想要的是比较详情对象的某些 propeties ,记录消息如果在列表中找到重复项并且删除重复项从列表中。
我重写了Detail类中的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;
}
答案 0 :(得分:1)
您需要使用Set<Details>
方法将所有元素添加到add
,逐个
如果add
方法在插入false
对象时返回Details
,则表示Detail
对象重复,您可以 log 它
将所有项目添加到Set
后,Set
包含 唯一 Details
元素
注意:此解决方案要求您的Details
班级覆盖equals
方法
修改:如果您希望在Details
的完全不同的属性上找到重复项,而不是equals
中使用的重复项,那么首先
Comparator
TreeSet
Comparator
TreeSet
将使用传递的compareTo
Comparator
方法找到重复项
有关详细信息,请阅读TreeSet
的文档,以了解它如何找到重复/相等