簡體   English   中英

Java字符串:哈希碼實際上是哈希值嗎?

[英]Java String: Is hashcode actually the hashvalue?

hastable在對象上使用一些哈希函數進行存儲。

該散列函數實質上是計算對象在表中的位置。

如果我們使用HashTableHashMap並且大小不能容納更多元素,則將調整這些集合的大小以容納更多元素。
這意味着必須重新存儲每個存儲的元素以計算新的更大表中的新位置。

我的問題是以下(以上是正確的):
我讀到String通過使用其存儲的字符來計算其hashcode ,此外,該hashvalue值在內部存儲(緩存)以獲得最佳性能,因為不必重新計算它。

這是我不了解的部分。如果hashcode基於String存儲的字符,那么hashtable的位置如何計算?

使用Stringhashcode是否有其他邏輯? 所以Stringhashcode是不實際的hashvalue

哈希碼未更改。 僅內部表中的位置。 打開HashMap並查看:

static int indexFor(int h, int length) {
    return h & (length-1);
}

表(實際上是數組)中的索引是根據哈希和數組的大小確定的。

因此,當“重新哈希”發生時,它使用相同的哈希碼,但長度不同,這意味着該元素將放入不同的存儲桶中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM