当前位置: 代码迷 >> J2SE >> 下头是list类hashcode方法内容,知道为什么hashcode要那么计算吗
  详细解决方案

下头是list类hashcode方法内容,知道为什么hashcode要那么计算吗

热度:77   发布时间:2016-04-23 19:53:17.0
下面是list类hashcode方法内容,知道为什么hashcode要那么计算吗?

hashCode = 1;
Iterator i = list.iterator();
while (i.hasNext()) {
Object obj = i.next();
hashCode = 31*hashCode + (obj==null ? 0 : obj.hashCode());
}
------解决思路----------------------
一般用质数是尽可能的避免重复,减少重复的概率
至于为什么用31,因为31=(2<<4)-1,明白了吧,31既是质数,又很方便的通过移位运算就能算出
n*31=(n<<4)-n
  相关解决方案