如何从列表中删除重复项?

时间:2015-08-04 20:21:37

标签: java arrays hashmap

所以我有一个界面。

public interface ARecord {
    public BigInteger getAutoID();
    public String getACompId();
}

public class APPPRecord extends AbstratAPRecord implements ARecord{
    private BigInteger autoID;
    private String ACompId = null;

    //setter and getter
    @Override
    public int hashCode() {
        return this.getACompId().hashCode();
    }

    @Override
    public boolean equals(Object obj) {
        APPPRecord e = null;
        if(obj instanceof APPPRecord){
            e = (APPPRecord) obj;
        }
        if(this.getACompId().equals(e.getACompId())){
            return true;
        }
        else {
            return false;
        } 
    }
}

在使用中,

    List<APPPRecord> PFRecord = null;
    while(scroll.next()) {
      APPPRecord item = (APPPRecord) scroll.get(0);
      List<ARecord> recs = new ArrayList<ARecord>();
      recs.addAll(PFRecord);

我的PFRecord列表包含重复的结果。我必须使用可以检查ACompId包含密钥的哈希映射。如果密钥已存在,请不要将其传递给recs.addAll。我该怎么做呢?任何帮助表示赞赏

我尝试使用Set,仍然在我的模型类中看到HashCode()和equals()实现的重复结果。

    for (ARecord records:recs){
        uniqueRecs.put(records.getACompId(), records);
        Set<String> keys = uniqueRecs.keySet();
        for(String key: keys){
            log.debug("keys " + key);
        }
    }

还尝试了hashMaps。

    HashMap<String, ARecord > uniqueRecs = new HashMap<String, ARecord >();
    for(ARecord records:recs){
       if(!uniqueRecs.containsKey(records.getACompId())){
            uniqueRecs.put(records.getACompId(), records);
            for (String key : uniqueRecs.keySet()) {
                log.debug("unique record " + key);
            }
        }                       
    }

它们都仍会产生重复的结果。有任何想法吗?我没有想法忽略重复。

0 个答案:

没有答案