我有一个简单的需求:我有数百万个字符串,并想测试它们是否存在于一个小集合中。对于这个集合,我在使用
当需求相反时,例如您有100个字符串并需要检查它们是否存在于数百万个字符串的集合中,我完全理解
但在我的情况下,似乎.NET在调用
有人能解释一下这个假设是否正确吗?
List<T>
和HashSet<T>
之间犹豫。当需求相反时,例如您有100个字符串并需要检查它们是否存在于数百万个字符串的集合中,我完全理解
HashSet<T>
是最佳选择。但在我的情况下,似乎.NET在调用
HashSet<T>
上的Contains
时必须计算数百万个哈希值(调用GetHashCode
),因此调用List<T>
的Contains
可能更快?有人能解释一下这个假设是否正确吗?
HashSet<string>
对你来说如何工作?(我可能可以提供一个例子,即使对于3个候选值,计算哈希的成本也比检查相等要低。) - Jon Skeet