2014-01-29 17 views
0

我有一個Detail class,我將細節對象添加到ArrayList<Detail>()。每個Detail對象都有不同的行號。我想要比較的是某些propeties的Detail對象,註冊消息如果在列表中找到重複項並且從列表中刪除重複的。 我重寫了Detail類中的equals()方法,但無法弄清楚下一步該怎麼做。比較ArrayList的某些屬性並記錄重複項

@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

你需要把所有的元素,並將它們用add方法,逐一

如果add方法,同時插入一個Details對象,這意味着Detail對象是重複返回false添加到Set<Details>,你可以日誌

所有項目後,加入到Set,然後Set包含獨特Details元素

注:此解決方案要求您Details類覆蓋equals方法

編輯:如果你想找到比其他的Details完全不同的特性重複什麼您已在equals中使用,則首先使用

  • 定義自定義Comparator其認爲這些特性
  • 創建與創建Comparator
  • 現在TreeSet會發現重複一個TreeSet使用傳遞Comparator

compareTo方法欲瞭解更多信息讀取TreeSet的文檔找到它如何發現重複/相等

+0

對不起,我忘了說Detail類有其他屬性除了在我的獲得者中定義的那些。在我的案例中使用Set將添加所有元素。我正在搜索某些屬性的重複項。 – yovan786

+0

請檢查編輯 – sanbhat