c# - 对象的哈希值如何存储在字典中?

标签 c# data-structures dictionary hash

我的 friend 最近在一次采访中被问到以下问题,我正在为他寻找一个明确的答案。

一个对象的哈希值是如何存储在字典中的?

提前干杯!

最佳答案

并不是所有的词典都一样。我假设您指的是哈希表,特别是 Dictionary 类。在那种情况下,散列值不会存储在数据结构中的任何位置。它仅用于定位桶。使用的具体实现维护两个数组。一个用于桶,一个用于条目。项总是添加到条目数组中的下一个可用槽中。哈希值对此没有任何影响。桶数组包含条目数组的索引。散列值用于定位桶数组中的适当位置,然后可以从那里提取进入数组的索引。这个实现的巧妙之处在于 Dictionary 类的枚举是按时间顺序排列的(当然假设没有删除和插入)。当然,这是一个永远不应依赖的实现细节,但它是所用算法的一个有趣产物。

关于c# - 对象的哈希值如何存储在字典中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3752229/

相关文章:

c# - 我的本地计算机上的 Czechia 英文名称与 Azure 上的不同英文名称

c# - 检测 Windows 服务中注销的用户

c# - 端点的多响应类型

java - 什么等同于 Java 中的 .NET SortedDictionary?

java - 优先级队列的堆实现?

java - 使用 Guava 将 map 转换为对象?

C# 将委托(delegate)作为参数传递

ios - 存储 UIImages ios 订单堆栈/队列的最佳方式

c++ - C++ 映射表中结构键的比较运算符

java - 单词是否在字典中