Dictionary for Int32键控集合的替代方案?

时间:2011-04-04 16:39:47

标签: .net collections dictionary integer key

Int32的哈希值是Int32 via的值:
Hashtables (Dictionary etc) with integer keys

因此,使用Dictionary(Of Integer, someObject)(或任何散列集合)添加了什么值?

我当然需要使用.Contains(integerKey)来防止错误...但我可以完全跳过哈希算法,对吗?

您将使用哪种类型来优化插入/检索?

编辑:我希望我可以执行大约10 ^ 5次查找和10 ^ 3次插入,这些操作肯定不是我的过程的瓶颈。

2 个答案:

答案 0 :(得分:4)

除非数字形成范围0 ... x(在这种情况下你可以使用List<T>甚至只是一个数组),我仍然会采用Dictionary<int, Whatever>方法。这很简单,很有效,而且几乎可以肯定会为你做得足够快。

这听起来像是微优化,在您证明自己遇到问题之前应该跳过它。与其他操作相比,您多久会在字典中查找项目?

编辑:正如Timwi所说,如果这真的是性能关键的话,那么确实可以节省成本。如果没有通用密钥类型,虚拟方法调用获取哈希代码并比较值,您肯定可以做得更好。但我不会像内置的那样信任任何第三方集合,而且我当然不会相信我自己的集合实现,而不需要进行大量的测试。 ..在我考虑退出内置类型之前,它必须是整个应用程序中真正重要的瓶颈。

答案 1 :(得分:2)

字典只会在类型上调用GetHashCode,因此对于Int32,我认为这很快。基本上,我认为它已经足够优化了。

我使用的是什么类型取决于值的键的类型,在大多数用途中我不会担心性能。

相关问题