3

我正在研究 .NET Hashtable类,并想尝试各个方面...

  • 给定数据集中发生了多少次冲突(重新散列)
  • 散列表的扩展对于多线程访问是否安全?
  • 我的哈希表的当前负载因子是多少?

我如何试验或学习有关给定哈希表或字典的上述信息

4

1 回答 1

2

的线程安全性HashtableMSDN中说明。如果只有一个线程写入 ,这是线程安全的Hashtable,这必须包括扩展。

现在,使用反射器进行一些挖掘:

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

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

于 2012-05-25T12:53:08.960 回答