public class Student {
private String id;
private String name
public String getId() {
return this.id;
}
public String getName() {
return this.name;
}
@override
public boolean equals(Object obj) {
//判断要判断的对象是不是由Student创建的
if(!(obj instanceof Student)) {
return false;
}
Student st = (Student)obj;//强制转换
return st.getId().equals(this.id) && st.getName().equals(this.name)
}
@override
public int hasCode() {
return this.id.hasCode()*this.name.hasCode();
}
}
今天在使用List方法的removeAll时,当List里面装的是对象时,这个方法会失效。因为没有重写equals方法和
hasCode()方法。因为调用removeAll()方法。如果List里面存储的是对象,会调用对象的equals方法和hasCode方法
private String id;
private String name
public String getId() {
return this.id;
}
public String getName() {
return this.name;
}
@override
public boolean equals(Object obj) {
//判断要判断的对象是不是由Student创建的
if(!(obj instanceof Student)) {
return false;
}
Student st = (Student)obj;//强制转换
return st.getId().equals(this.id) && st.getName().equals(this.name)
}
@override
public int hasCode() {
return this.id.hasCode()*this.name.hasCode();
}
}
今天在使用List方法的removeAll时,当List里面装的是对象时,这个方法会失效。因为没有重写equals方法和
hasCode()方法。因为调用removeAll()方法。如果List里面存储的是对象,会调用对象的equals方法和hasCode方法
因此要重新写,没有重写的对象比较是失效的。第一次遇到要比较对象是否相等。主要是对象的属性值是否相等
注:instanceof用法,判断前面的对象是否是后面的类创建的 比如 st instanceof Student就会返回true;