什么情况下需要重写呢?
比如去重操作时,
有时候往Set集合存放对象User,我们User类的字段太多时,比如有50个字段,
判断两个User对象相同,不需要判断它们所有字段都相同,只需要判断它们的某几个字段相同,就定为它们俩相同,
这时候需要重写Equals()方法,也要重写HashCode()方法,
public class User {
private String name;
private int age;
private String passport;
//getters and setters, constructor
@Override
public boolean equals(Object o) {
if (o == this)
return true;
if (o ==null)
return false;
if (!(o instanceof User)) {
return false;
}
User user = (User) o;
return user.name.equals(name) &&
user.age == age &&
user.passport.equals(passport);
}
//这种17和31散列码的想法来自经典的Java书籍——《Effective Java》第九条
@Override
public int hashCode() {
int result = 17;
result = 31 * result + name.hashCode();
result = 31 * result + age;
result = 31 * result + passport.hashCode();
return result;
}
}
在Equals()方法和HashCode()方法中,
判断哪几个字段重复,就定为对象相同
posted on
浙公网安备 33010602011771号