我有 60k 项需要根据 20k 查找列表进行检查。是否有一个集合对象(如 List
、HashTable
)提供了异常快速的 Contains()
方法?还是我必须自己写?换句话说,默认的 Contains()
方法是只扫描每个项目还是使用更好的搜索算法。
foreach (Record item in LargeCollection)
{
if (LookupCollection.Contains(item.Key))
{
// Do something
}
}
注意。查找列表已经排序。
最佳答案
在最一般的情况下,请考虑 System.Collections.Generic.HashSet
作为默认的“Contains”主力数据结构,因为评估 Contains
需要固定时间。
“什么是最快的可搜索集合”的实际答案取决于您的特定数据大小、有序性、散列成本和搜索频率。
关于c# - 什么 .NET 集合提供最快的搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1009107/