2019-04-06 15:53

# Java 关于如何override hashcode的问题

• java
• intellij-idea
• eclipse

1. FList (定义一个list)
2. FSet (定义一个set）
3. FMap（定义一个map）

If m1 and m2 are values of the FMap ADT, and

``````    ! (m1.equals(m2))

then m1.hashCode() is unlikely to be equal to m2.hashCode().
``````

Note: The word "unlikely" will be interpreted as follows. For every type K and V, if both m1 and m2 are selected at random from a set of FMap values such that for every non-negative integer n and int value h the probability of a randomly selected FMap m having

n == m.size() is

``````P(n) = 1/(2^(n+1))
``````

and for each key k such that m.containsKey(k) the probability that

``````     h == k.hashCode() is at most 1/5
``````

and for each value v such that v.equals(m.get(k)) the probability that

``````     h == v.hashCode() is at most 1/5
``````

and the three probabilities above are independent

then the probability of m1.hashCode() == m2.hashCode() when m1 and m2 are not equal is less than 40%.

• 点赞
• 回答
• 收藏
• 复制链接分享