我正在研究ADT(抽象数据类型)FMap。我已经完成了覆盖equals方法的工作。现在,我需要处理HashCode。但是我对说明有些困惑。
如果m1和m2是FMap ADT的值,并且
! (m1.equals(m2))
then m1.hashCode() is unlikely to be equal to m2.hashCode().
注意:“不太可能”一词的解释如下。对于每种类型K和V,如果从一组FMap值中随机选择m1和m2,则对于每个非负整数n和int值h,随机选择的FMap m的概率为
n == m.size()是
P(n) = 1/(2^(n+1))
,并且对于每个密钥k,使得m.containsKey(k)的概率
h == k.hashCode() is at most 1/5
,对于每个值v使得v.equals(m.get(k))的概率
h == v.hashCode() is at most 1/5
和以上三个概率是独立的
然后,当m1和m2不相等时,m1.hashCode()== m2.hashCode()的概率小于40%。
我对这部分感到非常困惑。...