我看到一个覆盖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一样。
但>>>
是什么意思?
答案 0 :(得分:1)
有人可以解释为什么这个hashCode好吗?为什么它对特定对象是唯一的?
不是;基本上没有哈希码功能。只是两个对象具有相同的哈希码是很少见的,并非不可能。
>>是什么vs.>>>手段?我以为>> x位向右移动,就像乘以2一样。
但>>>是什么意思?
这是无符号右移。如果第一位已经>>
,则1
向左移1s,无论原始位是什么,>>>
都会移位0s。