public int hashCode() {
return 7*name.hashCode() + 11*new Double(salary).hashCode()+13* hireDay.hashCode();
}

解决方案 »

  1.   

    这样做是想尽量做到两个不同对象的hashcode不一样,因为7,11,13都是质数,这样相乘再相加后相等的可能性会很小。
      

  2.   

    hashcode 返回值尽量分散。
      

  3.   

    对象的hashcode应该是在任何情况都不一样的才对呀?什么情况下会一样呢?
      

  4.   

    当需要用到hash 容器判断两个对象的情况。比如 HashSet<A>
      

  5.   

    hashcode不是任何情况下都不一样。它就是个散列码,比如散列函数为i mod 7,那么9和16的hashcode就是一样的