说我有我的对象
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);
}
一切都很好,只是我只想将新记录添加到列表中(如果它们具有不同的
id
和secondId
)。最好的方法是什么?我认为这将涉及使用
HashMap
。 最佳答案
您将要覆盖hashCode
中的equals
和MyObject
方法:
@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());
如果您的集合中已有一个具有相同
HashSet
和id
的对象,则secondId
将忽略您的新对象。关于java - 通过某些键值删除重复项,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29689276/