我有60k项需要对照20k的查找列表进行检查。是否有一个集合对象(如List,HashTable),提供了一个exceptionly快速Contains()的方法?还是我必须自己写?换句话说,默认Contains()方法是仅扫描每个项目,还是使用更好的搜索算法。
List
HashTable
Contains()
foreach (Record item in LargeCollection) { if (LookupCollection.Contains(item.Key)) { // Do something } }
注意 。查找列表已排序。
在最一般的情况下,请考虑将其System.Collections.Generic.HashSet作为默认的“包含”主力数据结构,因为评估需要花费固定的时间Contains。
System.Collections.Generic.HashSet
Contains
对“什么是最快的可搜索集合”的实际答案取决于您的特定数据大小,有序性,散列成本和搜索频率。