gpt4 book ai didi

java - 比较 ArrayList 的某些属性并记录重复项

转载 作者:行者123 更新时间:2023-12-01 13:33:28 25 4
gpt4 key购买 nike

我有一个Detail class我正在将详细对象添加到 ArrayList<Detail>() 。每Detail对象具有不同的行号。我想要的是比较详细对象的某些属性,如果在列表中找到重复项,记录一条消息,并删除重复项从列表中。我覆盖了 equals() Detail 类中的方法,但不知道下一步该怎么做。

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

最佳答案

您需要获取所有元素并将它们添加到 Set<Details>使用<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Set.html#add%28E%29" rel="noreferrer noopener nofollow">add</a>方法一一

如果add方法返回 false插入 Details 时对象,这意味着Detail对象重复,您可以记录

将所有项目添加到 Set 后,然后Set包含独特Details元素

注意:此解决方案要求您的 Details类覆盖equals方法

编辑:如果您希望在 Details 的完全不同的属性上查找重复项。除了您在 equals 中使用的内容之外,然后首先

  • 定义您的自定义 Comparator它考虑了这些属性
  • 创建 TreeSet与创建的Comparator
  • 现在TreeSet将使用 compareTo 查找重复项通过的方法Comparator

有关更多信息,请阅读 TreeSet 的文档了解它如何找到重复项/相等

关于java - 比较 ArrayList 的某些属性并记录重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21424345/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com