为什么这是`hashCode()`的一个很好的实现

时间:2014-11-25 19:49:40

标签: java override equals hashcode

我看到一个覆盖equals()的代码,可以理解地相应地覆盖hashcode()

 @Override
 public int hashCode() {
     int result = id;
    result = 31 * result + (int) (providerId ^ (providerId >>> 32));
    result = 31 * result + (int) (promotionId ^ (promotionId >>> 32));
    result = 31 * result + (coordinate != null ? coordinate.hashCode() : 0);
    return result;
 }

有人可以解释为什么这个hashCode好吗? 为什么它对特定对象是唯一的?

>>>>>的含义是什么? 我认为>>做x位向右移动,就像乘以2一样。

>>>是什么意思?

1 个答案:

答案 0 :(得分:1)

  

有人可以解释为什么这个hashCode好吗?为什么它对特定对象是唯一的?

不是;基本上没有哈希码功能。只是两个对象具有相同的哈希码是很少见的,并非不可能。

  

>>是什么vs.>>>手段?我以为>> x位向右移动,就像乘以2一样。

     

但>>>是什么意思?

这是无符号右移。如果第一位已经>>,则1向左移1s,无论原始位是什么,>>>都会移位0s。