重寫equals() 和 hashCode()方法
阿新 • • 發佈:2018-05-18
@override and 操作 ole obj 我們 override mil 想法
去重操作時,
有時候往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()方法中,
判斷哪幾個字段重復,就定為對象相同
重寫equals() 和 hashCode()方法