我的 friend 最近在一次采访中被问到以下问题,我正在为他寻找一个明确的答案。
一个对象的哈希值是如何存储在字典中的?
提前干杯!
最佳答案
并不是所有的词典都一样。我假设您指的是哈希表,特别是 Dictionary
类。在那种情况下,散列值不会存储在数据结构中的任何位置。它仅用于定位桶。使用的具体实现维护两个数组。一个用于桶,一个用于条目。项总是添加到条目数组中的下一个可用槽中。哈希值对此没有任何影响。桶数组包含条目数组的索引。散列值用于定位桶数组中的适当位置,然后可以从那里提取进入数组的索引。这个实现的巧妙之处在于 Dictionary
类的枚举是按时间顺序排列的(当然假设没有删除和插入)。当然,这是一个永远不应依赖的实现细节,但它是所用算法的一个有趣产物。
关于c# - 对象的哈希值如何存储在字典中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3752229/