C#创建一个固定大小的哈希表

3
我希望能够创建一个固定大小的哈希表,例如100个桶,如果需要存储超过100个项目,则必须发生冲突和覆盖。Hashtable类具有IsFixedSize属性,但它是只读的。
我是否完全错误地考虑了这个问题,或者有解决方案?

为什么您需要只有100个桶的哈希表? - Anon.
在我的应用程序中,我有非常大量的可能输入,例如,假设我有100000个可能的输入。然而,在这个应用程序中,只有大约5%的可能输入会被看到。我想使用哈希表将我的输入空间压缩到固定的内存大小。 - Projectile Fish
有趣的是,在HashTable的基本实现中,IsFixedSize只是简单地返回false。 - JP Alioto
1个回答

4
.NET框架中的集合不允许进行大量的微调。虽然您可能会发现其中一个足够高效以满足您的需求。在优化之前,请尝试一些可行的选择。
如果您不想自己创建,则可以找到第三方替代方案,具有更精细的控件。例如,请参见适用于C#和CLI的C5通用集合库作为可能的起点。请查看其文档页面上的各种Hash*类
如果您决定自己创建,则需要实现一些标准接口以使集合和/或列表、枚举等按预期与C# foreach和语言和.NET功能一起工作。
如果您有一个高效的C++实现,并且有办法在C#/.NET中使用它,那么您也可以采用这种方法。这可能需要一些技巧,但是SO上有关于如何完成此类事情的答案。

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