簡體   English   中英

Java HashMap中存儲了兩次“key”嗎?

[英]Is “key” stored twice in Java HashMap?

當將鍵值對添加到Java中的HashMap時,為了確定值對象的存儲區位置,哈希映射實現使用“key”對象的hashCode並對其應用散列。 最后,鍵值對存儲在存儲桶中。 存儲密鑰對象,以便在發生沖突時可以正確地檢索對象。

我的問題是,“密鑰”對象是在HashMap中存儲兩次,一次作為密鑰然后在存儲桶中,其中鍵值對存儲在鏈接列表中?

沒有。

首先: HashMap和(事實上任何其他事物 )只能存儲傳遞給它的某個對象的引用 因此,即使它是存儲兩個引用的關鍵,對於內存的要求也很少。

下一篇:實際執行 HashMap不是由Java標准規定的,所以它可能(而且會)取決於哪個 JVM使用。

最后,查看HashMap的OpenJDK源代碼Entry類只有一個對密鑰的引用(在aptly names key字段中),因此密鑰只存儲一次。

否。要選擇正確的存儲桶,請對該鍵進行哈希處理,然后將其用作索引。 這里不需要存儲任何東西。

我不確定,但似乎沒有必要這樣做。 在HashMap中訪問存儲桶時,哈希函數將應用於正在搜索的密鑰。 然后,它可以將此密鑰與存儲的密鑰進行比較。

不。如果您想確切了解HashMap工作原理,那么您可以查找源代碼。 JDK安裝目錄中應該有一個名為src.zip的文件,其中包含標准庫中所有類和接口的Java源代碼。

暫無
暫無

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

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