如果不向自定义类提供 hashCode() 方法,对 HashSet 的性能有何影响?

发布于 2024-09-12 11:44:36 字数 78 浏览 2 评论 0原文

如果我将自定义类对象添加到 HashSet 并且不为其提供 hashCode() 方法,它会如何影响哈希的性能?

谢谢, 阿杰

If I add custom class objects to HashSet and don't provide hashCode() methods on them, how does it impact the perfomance of hashing?

Thanks,
Ajay

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

雨的味道风的声音 2024-09-19 11:44:36

正如 Nikolaus 提到的那样,库存实施速度很快并且工作得很好。当您重写 equals 方法时,您应该毫不犹豫地使用它例外。例如,如果两个 Person 对象具有相同的 getFirstName() 和 getLastName(),则它们是“相等”的,您将重写 equals 方法来检查这一点,并重写 hashCode() 以在这些值的值相同时返回相同的哈希值两个属性是相同的。

The stock implementation as Nikolaus mentions is fast and will work just fine. You should not hesitate to use it except when you are overriding the equals method. For example, if two Person objects are "equal" if they have the same getFirstName() and getLastName() you would override the equals method to check that, and also override the hashCode() to return the same hash when the values for those two properties are the same.

残龙傲雪 2024-09-19 11:44:36

如果您没有定义自己的 hashCode 方法,则会调用对象的父类中的方法。如果您没有定义父级,则调用 Object 类中的 hashCode 方法。根据 java api 文档,该方法根据对象的地址返回一个整数 - 但具体如何完成取决于 jvm 和操作系统。

总之 - 如果您不指定任何 hashCode 方法,就像将对象放入 hashTable 中一样。

if you don't define your own hashCode method, the method from the parent Class of your object gets called. If you have no parent defined the hashCode method from the Object class gets called. According to the java api documentation the method returns an integer depending on the address of the object - but how exactly this is accomplished depends on the jvm and the operating system.

In summary - if you don't specify any hashCode methods it's like putting Objects in the hashTable.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文