簡體   English   中英

當Dictionary具有多個Int.MaxValue元素時,GetHashCode()行為起作用

[英]GetHashCode() behaviour work when Dictionary has more than Int.MaxValue elements

GetHashCode()返回一個int32作為哈希值。

我想知道當元素數量超過int.MaxValue時它將如何工作,因為所有元素都將返回某個整數<= int.MaxValue嗎?

如果object1.GetHashCode() == object2.GetHashCode() ,則沒有要求object1.GetHashCode() == object2.GetHashCode() object1.Equals(object2) 必須准備使用哈希碼的任何容器類型以處理哈希沖突。 一種可行的方法是將所有具有相同哈希碼的不同對象存儲在列表中,當查找對象時,首先查找哈希碼,然后遍歷關聯列表中的對象,對每個對象調用Equals對象,直到找到匹配項。

如前所述,GetHashCode不會產生唯一的結果。

字典在每個位置存儲一個鍵值對,因此,在發生沖突時,具有相同哈希碼(更改為基礎數組的大小)的項將被鏈接,並搜索您要檢索的實際鍵。

字典在最佳情況下甚至是普通情況下都是O(1),但在最壞情況下,它就是O(n)。

暫無
暫無

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

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