说我有我的对象
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
。
答案 0 :(得分:4)
您需要覆盖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
。
答案 1 :(得分:1)
覆盖MyObject中的equals方法(当且仅当它们具有相同的id和第二个id时,两个对象相等),并使用HashSet存储不同的值。
以下是覆盖方法的方法: Override equals method
答案 2 :(得分:1)
您可以使用HashSet
。使用HashSet
-
MyObject
equals()
方法和hashCode()
。l
HashSet