Int32
的哈希值是Int32
via的值:
Hashtables (Dictionary etc) with integer keys
因此,使用Dictionary(Of Integer, someObject)
(或任何散列集合)添加了什么值?
我当然需要使用.Contains(integerKey)
来防止错误...但我可以完全跳过哈希算法,对吗?
您将使用哪种类型来优化插入/检索?
编辑:我希望我可以执行大约10 ^ 5次查找和10 ^ 3次插入,这些操作肯定不是我的过程的瓶颈。
答案 0 :(得分:4)
除非数字形成范围0 ... x(在这种情况下你可以使用List<T>
甚至只是一个数组),我仍然会采用Dictionary<int, Whatever>
方法。这很简单,很有效,而且几乎可以肯定会为你做得足够快。
这听起来像是微优化,在您证明自己遇到问题之前应该跳过它。与其他操作相比,您多久会在字典中查找项目?
编辑:正如Timwi所说,如果这真的是性能关键的话,那么确实可以节省成本。如果没有通用密钥类型,虚拟方法调用获取哈希代码并比较值,您肯定可以做得更好。但我不会像内置的那样信任任何第三方集合,而且我当然不会相信我自己的集合实现,而不需要进行大量的测试。 ..在我考虑退出内置类型之前,它必须是整个应用程序中真正重要的瓶颈。答案 1 :(得分:2)
字典只会在类型上调用GetHashCode
,因此对于Int32,我认为这很快。基本上,我认为它已经足够优化了。
我使用的是什么类型取决于值的键的类型,在大多数用途中我不会担心性能。