我的朋友最近在一次采访中被问到以下问题,我正在为他找一个确定的答案。
如何将对象的哈希值存储在字典中?
提前干杯!
答案 0 :(得分:6)
并非所有字典都一样。我假设您指的是哈希表,特别是Dictionary
类。在这种情况下,散列值不会存储在数据结构中的任何位置。它仅用于定位铲斗。使用的具体实现维护两个数组。一个用于桶,一个用于条目。项目始终添加到条目数组中的下一个可用插槽。哈希值对此无任何影响。 bucket数组包含条目数组的索引。散列值用于定位桶阵列中的适当槽,然后从那里可以提取索引到条目数组中。这个实现的巧妙之处在于Dictionary
类的枚举是按时间顺序排列的(当然假设插入后没有删除)。当然,这是一个永远不应该依赖的实现细节,但它是所用算法的一个有趣的工件。