日期:2014-05-20  浏览次数:20691 次

请问,在计算散列码时这些数字是固定的吗?
书上有一个程序是关于散列码的,我就不写全了,我想问下面的7 11 13这样的数字是固定的吗?

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


中间用的*号也是固定的吗?


------解决方案--------------------
不固定,类自己实现,Integer,String 实现的都不相同,看你自己实现了
------解决方案--------------------
当然不是固定的,这个里面的算法自己写
------解决方案--------------------
楼主所说的示例来自于《java核心技术 卷一》。

不是固定的,自己随便写。
hashCode方法与equals方法需要成对重写,即重写了Object类的equals方法后必须还要重写hashCode方法。

重写hashCode方法所要遵循的原则是:
若o1.equals(o2)结果为true,那么o1.hashCode() == o2.hashCode()。

在遵循这个原则的前提下,至于hashCode方法如何实现楼主可以随意。
但还是推荐楼主示例那样写。