当我们不考虑集合时,Java中的覆盖哈希码的用途是什么?

问题描述 投票:1回答:1

[面试官问这个问题,与哈希码有关的大多数答案都用于存储与检查对象相等的存储桶。

还有其他的一般用例或方案,其中哈希码是有益的并且可以在例行程序中使用吗?

最近,我在抛出异常"Composite-id class does not override hashCode()"的地方使用了JPA,但是再次由实现类使用。

class a {
    public int hashCode() {
    }
}

class b {
    public static void main(String[] str) {
        //In what ways can i use hashcode here?
    }
}
java hashmap hashcode hash-code-uniqueness
1个回答
0
投票

面试题中的一个小语义错误。哈希码不用于检查相等性,而是用于检测不平等性。如果哈希码不同,则保证对象不相等。如果代码相等,则对象可能相等,需要使用equals-method进行检查。

也就是说,如果哈希码被缓存,则可以用来加速equals方法。

© www.soinside.com 2019 - 2024. All rights reserved.