我希望能够创建一个固定大小的哈希图,比如 100 个桶,如果我需要存储超过 100 个项目,那么碰撞和覆盖就必须发生。哈希表类有一个 IsFixedSize 属性,但它是只读的。
我是否完全错误地考虑了这一点,或者有解决方案吗?
.NET 框架中的集合不允许进行大量微调。尽管您可能会找到一种足够有效的方法来满足您的需求。在优化之前尝试一些可行的方法。
如果您不自己动手,那么您可能会找到具有更细粒度控制的第 3 方替代方案。例如,请参阅The C5 Generic Collection Library for C# and CLI作为一个可能的开始。在他们的文档页面上查看各种 Hash* 类。
如果您决定自己动手,那么您将需要为集合和/或列表、枚举等实现一些标准接口foreach
,以便它们与 C#和语言以及 .NET 功能一起按预期工作。
如果你有一个有效的 C++ 实现并且有在 C#/.NET 中使用它的方法,你也可以采用一个高效的 C++ 实现。这可能需要一些麻烦,但是关于如何完成这种事情有一些答案。