我有一个对象,我只是想覆盖equals 方法来比较两个对象,我没有在我的程序中的任何地方使用任何散列集合。在这种情况下,为什么 hashCode 和 equals 方法中存在契约,即如果两个对象相等,那么它们应该具有相同的哈希码。 如果您想将此对象作为某个使用散列然后覆盖它的集合中的键,那么一般的哈希码契约(Contract)不应该是特定于大小写的吗??
最佳答案
我会说是的,因为您不知道您(或更重要的是,另一个开发人员)将来是否想使用散列将它们放入一个集合中。这可以是直接的,也可以是间接的,即您可以将您的对象传递给另一个不是您编写的方法,并且该另一个方法在其实现中使用散列集合。
关于java - 如果我重写 equals 并且不使用任何哈希集合,是否有必要重写哈希码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10546106/