我正在学习.NET Hashtable 类,并希望尝试其各个方面...
- 给定数据集中发生了多少次冲突(重新散列)?
- 哈希表扩展对于多线程访问是否安全?
- 我的哈希表当前负载因子是多少?
如何在给定的哈希表或字典中实验或学习上述信息?
如何在给定的哈希表或字典中实验或学习上述信息?
Hashtable
的线程安全性在MSDN中有说明。只有一个线程写入Hashtable
时,它是线程安全的,这还必须包括扩展。
现在,通过Reflector进行一些挖掘:
负载因子存储在loadFactor
私有字段中,如果您想检查其值,可以使用反射访问它。
重新哈希更难。 Hashtable
没有内部状态仅通过重新哈希可检测到被修改。因此,您必须在这里查看其他选项,例如使用Reflector创建自己的相同Hashtable实现,然后添加一些代码来计算重新哈希。如果您这样做,也可以将负载因子公开为属性,以使您的生活更加轻松。