GetHashCode()
返回int32
作为哈希值。
我想知道当元素数超过int.MaxValue
时它会如何工作,因为所有元素都会返回一些整数<= int.MaxValue
?
答案 0 :(得分:0)
不要求object1.GetHashCode() == object2.GetHashCode()
,object1.Equals(object2)
。任何使用哈希码的容器类型都必须准备好处理哈希冲突。一种可能的方法是在列表中存储具有相同哈希码的所有不同对象,并且在查找对象时,首先查找哈希码,然后迭代相关列表中的对象,调用{{1对于每个对象,直到找到匹配项。
答案 1 :(得分:0)
如前所述,GetHashCode不会产生独特的结果。
字典在每个位置存储keyvaluepair,因此当发生冲突时,将链接具有相同哈希码(修改为基础数组大小)的项目,并搜索您要检索的实际密钥。
字典在最好的情况下是O(1),甚至是平均情况,但在最坏的情况下,它是O(n)。