簡體   English   中英

hashMap是否作為鏈表列表實現

[英]Is hashMap implemented as an array of linked lists

在閱讀HashMap我發現它是作為一個桶陣列實現的? 現在這些桶總是鏈接列表嗎? 如果是這樣,為什么他們被稱為桶而不是鏈表?

查看HashMap的源代碼告訴我們它是作為一個條目數組實現的:

transient Entry[] table;

每個條目有一個字段next ,所以他們創造一個單鏈表結構:

static class Entry<K,V> implements Map.Entry<K,V> {
    final K key;
    V value;
    Entry<K,V> next;

“Bucket”是一個更高級別的術語,在文獻和解釋哈希映射時使用。 這里“桶”實現為單個鏈表。

在Java的Hashmap中,存儲桶被實現為鏈接列表(每個Entry都引用另一個名為next條目)。

術語“桶”指的是概念。 鏈接列表實現細節。

Java,使用“Seperate Chaining”的概念,它被實現為鏈表的數組,以避免沖突。 但是,情況並非總是如此。 哈希映射可以完全實現為數組(線性探測); 這雖然有更高的機會創造一個colission。

關於你的“水桶”問題。 您可以將鏈接列表想象為存儲桶。 但是,如果您的HashMap實現使用適當的HashFunction(在hashmap數組中分配您的值的算法),您的“桶”最好只有一個項目。

暫無
暫無

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

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