【问题标题】:C# creating a fixed size hashtableC# 创建一个固定大小的哈希表
【发布时间】:2011-01-09 09:06:51
【问题描述】:

我希望能够创建一个固定大小的哈希图,比如 100 个桶,如果我需要存储超过 100 个项目,那么碰撞和覆盖就必须发生。哈希表类有一个 IsFixedSize 属性,但它是只读的。

我的想法是完全错误的,还是有解决办法?

【问题讨论】:

  • 为什么你的 hashmap 需要只有 100 个桶?
  • 在我的应用程序中,我有大量可能的输入,例如我有 100000 个可能的输入。但是,在此应用程序中,可能只会看到大约 5% 的可能输入。我想使用 hashmap 将我的输入空间压缩到一个固定的内存大小。
  • 有趣的是,在 HashTable 的基本实现中,IsFixedSize 只返回 false。

标签: c# size hashtable hash fixed


【解决方案1】:

.NET 框架中的集合不允许进行大量微调。尽管您可能会找到一种足够有效的方法来满足您的需求。在优化之前尝试一些可行的方法。

如果您不自己滚动,那么您可能会找到具有更细粒度控制的第 3 方替代方案。例如,请参阅The C5 Generic Collection Library for C# and CLI 作为可能的开始。签入various Hash* classes on their documentation page

如果您决定自行开发,那么您需要为集合和/或列表、枚举等实现 some of the standard interfaces,以便它们与 C# foreach 以及语言和 .NET 功能一起按预期工作。

如果你有一个有效的 C++ 实现,并且有在 C#/.NET 中使用它的方法,你也可以使用它。这可能需要一些麻烦,但是关于如何完成这种事情有关于 SO 的答案。

【讨论】:

    猜你喜欢
    • 2012-04-01
    • 2018-08-08
    • 2016-03-29
    • 2016-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-13
    相关资源
    最近更新 更多