[英]Java - how to get a key object (or entry) stored in HashMap by 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.