如果两个对象相等,则哈希码 必须相同。那为什么 HashMap
中的 any 检查会做 -
if (e.hash == hash && ((k = e.key) == key || (key != null && key.equals(k)))) {
而不是简单
if ((k = e.key) == key || (key != null && key.equals(k)))) {
最佳答案
因为散列检查很便宜,而 equals()
方法调用可能很昂贵。如果哈希检查失败,我们不需要为返回 false 而进行 equals()
检查而烦恼,因此我们节省了时间。
关于java - 如果我们无论如何都要检查等于,为什么我们要检查散列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19354754/