HashSet<int> 中的哈希性能与包含的 List<int>

Mar*_*cel -3 c# hash performance hashset

我正在寻找整数列表与整数散列集之间的比较/性能考虑因素。这就是HashSet<T> 和 List<T> 的区别是什么谈论T为整数。

我将有多达几千个整数,我想找出单个整数是否包含在这个集合中。

现在当然这对散列集大喊大叫,但我想知道散列在这里是否有益,因为它们只是开始时的整数。首先散列它们不会在这里增加不必要的开销吗?

或者换句话说:使用散列集是否有益,即使对于整数集?

The*_*ias 5

散列一个整数非常便宜,你可以在该Int32.GetHashCode方法的源代码中看到:

// The absolute value of the int contained.
public override int GetHashCode()
{
    return m_value;
}
Run Code Online (Sandbox Code Playgroud)

数字的散列是数字本身。没有比这更便宜的了。所以没有理由担心开销。将您的数字放入 a 中HashSet,享受以O(1)计算复杂度进行搜索的乐趣。