2017-02-09 75 views
0

有人可以查看並讓我知道我的理解是否正確。理解哈希映射的內部實現

在放置該值時,根據散列碼生成密鑰的哈希碼,我們找到該桶並存儲該密鑰值對。 現在在獲取我們傳遞密鑰的值時,會生成其哈希碼,然後使用此哈希碼我們找到存儲鍵值的桶。並且該值被返回。

這是正確的理解,如果2個比較密鑰具有相同的哈希碼,那麼當獲取該密鑰的值(獲取哈希碼時生成的哈希碼)哈希碼只是用來到達桶。然後使用equals方法來檢索值?

+2

是的,這聽起來是正確的。 –

+1

另請參見:[Java HashMap如何處理具有相同哈希代碼的不同對象?](http://stackoverflow.com/questions/6493605/how-does-a-java-hashmap-handle-different-objects-with -the-相同散列碼/ 6493946#6493946) – Jesper

回答

0

您瞭解正確。由於計算散列碼並發現存儲桶的速度很快,並且使用equals與散列映射中的每個對象進行比較的效率都很低,所以使用這些存儲桶來提高性能。使用大型設備時,性能優勢非常明顯。