关于当HashCode相等但两个元素的概率不相等时写hashCode的问题

时间:2019-04-06 07:19:33

标签: java dictionary hashcode

我正在研究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%。

我对这部分感到非常困惑。...

0 个答案:

没有答案