向Collection接口的实现类的对象中添加数据obj时,要求obj所在类要重写equals()方法。如果不写,则系统默认为Object类的equals()方法,而此方法在进行比较时,是使用==判断是否相等,即判断对象引用的地址,而不是内容,所以一般需要重写自定义类的equals()方法。具体可以参考下方代码。代码中的类名和属性可以根据情况修改。
public class Person {
private String name;
private int age;
public Person(int age,String string) {
this.age = age;
this.name = string;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
@Override
public boolean equals(Object obj) {
// TODO Auto-generated method stub
if (obj.getClass()==this.getClass()) {
if (this.getName() == ((Person) obj).getName() && this.getAge() == ((Person)obj).getAge()) {
return true;
}else {
return false;
}
}else {
return false;
}
}
}
这段代码考虑到了不使用泛型指定集合元素类型时,对不同类型的元素进行比较的情况。