我正在寫一個使用哈希映射的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