gpt4 book ai didi

java - 使用我自己的 hashcode 作为 hashmap java

转载 作者:行者123 更新时间:2023-12-01 08:15:53 28 4
gpt4 key购买 nike

我正在编写一个使用 hashmap 的 java 程序。我知道 HashMap 是如何工作的。如果我add(key,object),那么java会找到键的哈希码,并使用它来查找存储对象的存储桶。
现在我有了自己的对象hashcode实现。我想把它作为关键 - 类似 add(object.hashcode(),object)
是否可以阻止 java 再次散列 object.hashcode( )?因为我已经实现了 hashcode(),在 hashcode 上调用 hashcode() 会浪费时间。

最佳答案

实现的方法是实现hashCode()来缓存计算出的哈希值。请注意,这意味着您的对象是不可变的,或者至少在将对象放入映射后,贡献于 hashCodeequals 的字段不会改变。

您不需要使用哈希码作为 key 。此外,这几乎肯定是错误的方法,因为它实际上不是哈希表应该如何工作。哈希冲突是游戏的名称,因此哈希码仅用于寻址存储桶,但是(名称说明了一切)存储桶包含的不是一个,而是任意多个对象。这些必须通过 equals 检查才能找到您要查找的确切值。

考虑到您最初的想法是使用 hashcode 作为键,看来您并不是真正在追求映射,而是在追求 HashSet。您只是将对象添加到集合中,稍后需要检查对象是否存在于集合中。这是一套。

关于java - 使用我自己的 hashcode 作为 hashmap java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13402281/

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