是否有HybridDictionary的通用版本?

时间:2008-12-22 17:34:13

标签: .net

System.Collection.Specialized.HybridDictionary的描述是:

  

使用a实现IDictionary   System.Collections.Specialized.ListDictionary   虽然收藏很小,但是   然后切换到   System.Collections.Hashtable时   收集变得很大。

是否存在等效的通用实现?

1 个答案:

答案 0 :(得分:3)

不是我知道的。但是,有证据表明需要吗?哈希表没有很大的开销,即使对于非常小的 N ,使用普通哈希表比线性搜索更快。

编辑我没有基准来证明它,只是通过比较算法我得出结论,哈希表应该比线性搜索更快 N &gt ;平均为6(对于字符串键或类似的非平凡哈希),所以实际上没有理由进行混合实现。

论点如下。在线性搜索中,平均需要将一半元素与输入进行比较,即 N / 2.在哈希表中,无论输入大小如何,预计比较的预期数量为2 (对于负载因子小于0.1的非常小的哈希表,这实际上接近1)。另外,必须计算哈希值。这会导致输入上的3个操作,以及可以忽略的非常小的开销。因此,我们搜索哪个 N 确实3> N / 2,其通常是 N > 6。

请注意,上述计算实际上是错误的,因为对于这么少的元素,.NET的Dictionary的加载因子将远小于0.1。因此,临界点实际上甚至更低。