检测哈希表或字典中的重新哈希或冲突

时间:2012-05-25 12:27:59

标签: c# .net dictionary hashtable

我正在学习.NET Hashtable课程,并希望尝试各方面......

  • 给定数据集中发生了多少次碰撞(重新发生)
  • 哈希表的扩展对多线程访问是否安全?
  • 哈希表的当前加载因子是什么?

如何实验或学习有关给定哈希表或词典的上述信息

1 个答案:

答案 0 :(得分:2)

Hashtable中列出了Hashtable的线程安全性。如果只有一个线程写入loadFactor,则线程安全,这必须包括扩展。

现在,使用Reflector进行一些挖掘:

加载因子存储在Hashtable私有字段中,如果要检查其值,可以使用反射访问该字段。

重新变得更难。这些不是{{1}}的内部状态,它通过rehash 以可检测的方式进行修改,并且仅通过rehash 进行修改。因此,您必须在此处查看其他选项,例如使用Reflector创建自己的相同Hashtable实现,然后添加一些代码来计算rehashes。如果您这样做,您也可以将负载因子作为属性公开,以使您的生活更轻松。