为什么要重写Equals和HashCode?
每当我们定义一个immutable类的时候,就应该考虑重写其Equals和HashCode
一个immutable类,创造两个对象A,B; A和B有着一模一样的内容,但是由于内存地址的不同,我们用"==“或者是缺省的equals(内部实现还是”= ="),是不能够得出他们相等的。
如果要想他们在外界看来是一样的,那就要重写类中的equals函数,而HashCode也应该随之重写。
因为:如果两个对象相同,就是适用于equals(java.lang.Object) 方法,那么这两个对象的hashCode一定要相同 ref
对于mutable的类,我们不必管Equals和HashCode,直接使用默认的即可
如何重写Equals和HashCode?
例子:
@Override
public boolean equals(Object obj) {
if (this == obj) return true;
if (obj == null || this.getClass() != obj.getClass()) return false;
Person person = (Person) obj;
return name.equals(person.name);
}
@Override
public int hashCode() {
return Objects.hash(name, age);
}
[reference :]
HashMap什么时候重写hashcode和equals方法,为什么需要重写_Keith003的博客-优快云博客
为什么使用HashMap需要重写hashcode和equals方法?_hxt的博客-优快云博客_为什么要重写hashcode和equals方法
456



被折叠的 条评论
为什么被折叠?



