我正在写一个使用哈希映射的java程序。我知道一个hashmap是如何工作的。如果我是add(key,object)
,那么java将找到密钥的哈希码并使用它来查找存储object
的存储桶。
现在我有我自己的hashcode
执行object
。我想把这个作为关键 - 就像add(object.hashcode(),object)
。
是否有可能阻止java再次哈希object.hashcode()
?因为我已经执行hashcode()
,所以调用hashcode()
上的hashcode会浪费时间。使用我自己的哈希码哈希映射java
0
A
回答
5
执行此操作的方法是实施hashCode()
以在计算散列值后对其进行高速缓存。请注意,这意味着您的对象是不可变的,或者至少在将对象放入地图后,对hashCode
和equals
作出贡献的字段不会更改。
您不需要使用散列码作为密钥。此外,这几乎肯定会是错误的做法,因为它实际上是而不是哈希表应该如何工作。哈希碰撞是游戏的名称,因此哈希码仅用于对一个存储桶进行寻址,但(名称全称)一个存储桶不包含一个,但包含任意多个对象。这些必须通过equals
进行检查以找到您正在寻找的确切人。
鉴于你最初的想法是使用hashcode作为关键,它看起来像你不是真的在地图之后,但在HashSet
之后。您只是将对象添加到集合中,稍后会想要检查对象的存在。这是一套。
1
相关问题
- 1. 通过哈希映射映射,需要返回哈希映射
- 2. 使用哈希映射
- 3. 使用哈希映射
- 4. 哈希映射内的哈希映射的平均值
- 5. 哈希映射和并发哈希映射有什么区别?
- 6. 哈希映射中的哈希码约束
- 7. 不同的哈希码,但哈希映射不工作
- 8. 带有自己制造的盒子的Java哈希映射?
- 9. 为boost哈希映射定义自定义哈希函数
- 10. 哈希映射的成员?
- 11. Python中的哈希映射
- 12. 反射哈希码?
- 13. java改变哈希映射的值
- 14. 帮助Java中的哈希表映射
- 15. 有关java哈希映射的帮助
- 16. 的Java将哈希映射成树形
- 17. 基于java光盘的哈希映射
- 18. 哈希映射迭代
- 19. 排序哈希映射
- 20. 实现哈希映射
- 21. PowerShell哈希映射类型
- 22. 哈希映射对象键
- 23. 迭代哈希映射
- 24. 聚簇哈希映射
- 25. 方法从哈希映射
- 26. 映射到一个哈希
- 27. 使用ArrayList的哈希映射
- 28. 使用链接的哈希映射
- 29. 身份哈希映射的使用
- 30. 哈希映射,哈希集合,哈希字典之间有什么区别?
我认为有一个很好的理由,你为什么不只是想重写相关对象的'hashCode'方法? – Perception
@Perception:但hashmap会考虑密钥的哈希码,对吧? – Ashwin
嗯,是的,但假设在将对象添加到地图后没有更改对象的任何'关键'属性,只需调用'map.put(object,object)'。 – Perception