在哈希表或字典中检测重新散列或冲突

3
我正在学习.NET Hashtable 类,并希望尝试其各个方面...
  • 给定数据集中发生了多少次冲突(重新散列)?
  • 哈希表扩展对于多线程访问是否安全?
  • 我的哈希表当前负载因子是多少?

如何在给定的哈希表或字典中实验或学习上述信息?

1个回答

2
Hashtable的线程安全性在MSDN中有说明。只有一个线程写入Hashtable时,它是线程安全的,这还必须包括扩展。

现在,通过Reflector进行一些挖掘:

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

重新哈希更难。 Hashtable没有内部状态仅通过重新哈希可检测到被修改。因此,您必须在这里查看其他选项,例如使用Reflector创建自己的相同Hashtable实现,然后添加一些代码来计算重新哈希。如果您这样做,也可以将负载因子公开为属性,以使您的生活更加轻松。


除了重新散列之外,还有什么可以修改内部状态?如果我观察自己与Hashtable的交互,是否足以推断发生了什么?我将尝试使用Reflector来回答这个问题,并在此处发布结果。 - makerofthings7
该链接似乎表明通过Synchronized支持多个写操作。 - paparazzo
@makerofthings7,您能否在这里发布您的发现呢?谢谢。 - Filip Popović

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接