说我有我的对象

class MyObject{

    private int id;
    private int secondId;
    private String name;
    private String address;

}


我正在将这些对象的列表添加到列表中。

List<MyObject> finalList = new ArrayList<MyObject>();
while(someCondition) {
      List<MyObject> l = getSomeMoreObjects();
      finalList.addAll(l);
}


一切都很好,只是我只想将新记录添加到列表中(如果它们具有不同的idsecondId)。

最好的方法是什么?我认为这将涉及使用HashMap

最佳答案

您将要覆盖hashCode中的equalsMyObject方法:

@Override
public int hashCode() {
    int hash = 7;
    hash = 97 * hash + this.id;
    hash = 97 * hash + this.secondId;
    return hash;
}

@Override
public boolean equals(Object obj) {
    if (obj == null)
        return false;
    if (!(obj instanceof MyObject))
        return false;
    MyObject other = (MyObject) obj;
    return this.id == other.id && this.secondId == other.secondId;
}


然后创建HashSet

HashSet<MyObject> set = new HashSet<>();


然后只需向其添加对象:

set.add(new MyObject());


如果您的集合中已有一个具有相同HashSetid的对象,则secondId将忽略您的新对象。

关于java - 通过某些键值删除重复项,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29689276/

10-10 09:58