2010-09-20 73 views

回答

6

并非所有字典的工作原理都是一样的。我假设你指的是散列表,特别是Dictionary类。在这种情况下,散列值不会存储在数据结构的任何位置。它只用于定位桶。使用的具体实现维护两个数组。一个用于桶,一个用于输入。项目是始终将添加到条目数组中的下一个可用插槽。散列值对此无任何影响。存储区数组包含入口数组中的索引。散列值用于在存储区阵列中找到合适的插槽,然后从那里将索引提取到条目数组中。关于这个实现的整洁的事情是Dictionary类的枚举按时间顺序排列(假设当然没有删除,然后插入)。当然,这是一个永远不应该依赖的实现细节,但它是所用算法的一个有趣的工件。