2010-12-17 94 views
1

哈希映射究竟是如何在內部存儲數據......我知道它會計算密鑰的HashCode值並將其存儲。如果兩個密鑰具有相同的哈希代碼,它將放入相同鬥。但是爲什麼,如果「兩個鍵是在寫入相同的HashMap」現有一個?兩個鍵是相同的哈希映射在寫「現有的?

回答

1

哈希碼的主要目的是減少基於哈希的集合中equals方法的調用次數。對於equals方法,相同的哈希碼不需要返回true。但是如果你說它的平等是真的,那麼它的代碼應該是真的。

9

好吧,這就是它設計的目的,它是鍵/值對的映射,其中任何鍵都與0或1值相關聯。鍵的第二個值,該鍵的條目將被替換。

雖然它不是基於散列碼,它也會測試關鍵是否相等。兩個鍵可以不相等,但具有相同的散列碼。重要的是兩個相同的密鑰必須具有相同的哈希碼。

如果你想存儲一個鍵的多個值,你應該使用類似Guava的Multimap

4

如果hashCode()相同,它將不會覆蓋該值。只有在equals方法相同時纔會覆蓋。

1

散列函數通常用於消除重複數據。這就是爲什麼集合類型 像Hashmap不允許存儲重複數據。 該算法已被用於數據庫,以消除檢索時可能出現的重複。