Java 当hashCode相等,但两个元素的概率不相等时,写hashCode的问题
我正在开发一个ADT(抽象数据类型)FMap。我已经完成了对equals方法的重写。现在我需要处理HashCode。但我对说明书有点困惑 如果m1和m2是FMap ADT的值,以及Java 当hashCode相等,但两个元素的概率不相等时,写hashCode的问题,java,dictionary,hashcode,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,如果m1和m2都是从一组FMap值中随机选择的,那么对于每一个非负整数n和int值h,随机
! (m1.equals(m2))
then m1.hashCode() is unlikely to be equal to m2.hashCode().
注:“不太可能”一词的解释如下。对于每种类型的K和V,如果m1和m2都是从一组FMap值中随机选择的,那么对于每一个非负整数n和int值h,随机选择的FMap m的概率
n==m。大小()为
对于每个密钥k,m.containsKey(k)的概率
h == k.hashCode() is at most 1/5
h == v.hashCode() is at most 1/5
对于每个值v,v等于(m.get(k))的概率
h == k.hashCode() is at most 1/5
h == v.hashCode() is at most 1/5
上述三种概率是独立的
当m1和m2不相等时,m1.hashCode()==m2.hashCode()的概率小于40%
我对这一部分很困惑