当Dictionary具有多个Int.MaxValue元素时,GetHashCode()行为起作用

时间:2014-02-26 11:21:31

标签: c# gethashcode

GetHashCode()返回int32作为哈希值。

我想知道当元素数超过int.MaxValue时它会如何工作,因为所有元素都会返回一些整数<= int.MaxValue

2 个答案:

答案 0 :(得分:0)

不要求object1.GetHashCode() == object2.GetHashCode()object1.Equals(object2)。任何使用哈希码的容器类型都必须准备好处理哈希冲突。一种可能的方法是在列表中存储具有相同哈希码的所有不同对象,并且在查找对象时,首先查找哈希码,然后迭代相关列表中的对象,调用{{1对于每个对象,直到找到匹配项。

答案 1 :(得分:0)

如前所述,GetHashCode不会产生独特的结果。

字典在每个位置存储keyvaluepair,因此当发生冲突时,将链接具有相同哈希码(修改为基础数组大小)的项目,并搜索您要检索的实际密钥。

字典在最好的情况下是O(1),甚至是平均情况,但在最坏的情况下,它是O(n)。