Hashcode平等是否意味着引用基于参考的平等?

Abh*_*air 3 java methods overriding object

我读到要在java中使用equals()方法我们还必须覆盖hashcode()方法,并且相等(逻辑)对象应该具有eual哈希码,但这并不意味着基于引用的相等!这是我的重写equals()方法的代码,我应该如何覆盖hashcode方法:

@Override    
public boolean equals(Object o)
        {
            if (!(o instanceof dummy))
                return false;
            dummy p = (dummy) o;
            return (p.getName() == this.getName() && p.getId() == this.getId() && p.getPassword() == this.getPassword());

        } 
Run Code Online (Sandbox Code Playgroud)

我只是想了解它是如何工作的,所以只有三个字段,即名称,id密码,只是试图比较我在main()中定义的两个对象!我还需要知道是否总是需要覆盖hashcode()方法和equals()方法?

Str*_*ior 5

Hashcode平等并不意味着什么.但是,哈希码不等式应该意味着equals会产生错误,并且任何两个相等的项应该始终具有相同的哈希码.

出于这个原因,用equals覆盖hashcode总是明智的,因为许多数据结构都依赖于它.