gpt4 book ai didi

java - 如果该类不用作 HashMap 中的键,是否有任何实际意义来覆盖哈希码?

转载 作者:行者123 更新时间:2023-12-02 10:55:03 25 4
gpt4 key购买 nike

我最近一直在学习 hashCode 函数和 HashMap,并尝试为自己的类创建自己的 hashCode 函数。根据我所做的研究,从实际角度来看,需要重写 hashCode 的唯一原因似乎是该类将用作 HashMap 中的键,或者 hashCode 函数在其他地方使用。我知道它是要重写的 equals 和 hashCode 契约的一部分,将来另一个用户可能想在 HashMap 中使用它,但为了理解,我想知道该类是否从未使用过作为键,我还需要重写 hashCode 函数吗?

最佳答案

每当你实现equals时,你应该始终实现hashCode,因为即使从未将你的对象放入HashMap中,你也不知道您正在使用的库可能会做什么。库可以自由地依赖您对象的 hashCode 而无需通知您。

即使您的 IDE 自动生成 hashCode 以及 equals,或者即使它只是

public int hashCode() {
raise RuntimeException("This type doesn't support hashCode (for now).");
}

您永远不应该让您的 hashCode 与您的 equals 不一致。

关于java - 如果该类不用作 HashMap 中的键,是否有任何实际意义来覆盖哈希码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44117763/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com