欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

equals和hashCode 工作 

程序员文章站 2022-06-08 21:11:09
...
  public class Person   
{   
    private int id;   
    private String name;   
    private String password;
	private double salary;
    private int hashCode;   
    public Person(int id,String name,String password,double salary) {   
      this.id = id;   
      this.name = name;   
      this.password = password;   
	  this.salary = salary;
    }   
    public boolean equals(Object obj) {   
       if (this == obj)   
       {   
           return true;   
       }   
       if (!(obj instanceof Person))   
       {   
           return false;   
       }   
       Person other = (Person)obj;   
       if (this.id != other.id)   
       {   
           return false;   
       }   
       if (!nullSafeEquals(this.name,other.name))   
       {   
           return false;   
       }   
       if (!nullSafeEquals(this.password,other.password))   
       {   
           return false;   
       }   
	   if (Double.doubleToLongBits(this.salary) != Double.doubleToLongBits(other.salary))
	   {
           return false;
	   }
       return true;   
    }   
    private boolean nullSafeEquals(Object obj1,Object obj2) {   
        return obj1 == null ? obj2 == null : obj1.equals(obj2);   
    }   

    public int hashCode() {   
       if (hashCode == 0)   
       {   
           int result = 17;   
           result = result * 37 + this.id;   
           result = result * 37 + (this.name == null ? 0 : this.name.hashCode());   
           result = result * 37 + (this.password == null ? 0 : this.password.hashCode());   
		   long temp = Double.doubleToLongBits(this.salary);
		   int salaryInt = (int)(temp ^ (temp >>> 32));
		   result = result * 37 + salaryInt;
           hashCode = result;   
       }   
       return hashCode;   
    }   
    public String toString() {   
       return super.toString() + ": [" + this.name + "]";    
    }   
}  

相关标签: 工作