I have 60k items that need to be checked against a 20k lookup list. Is there a collection object (like List, HashTable) that provides an exceptionly fast Contains() method? Or will I have to write my own? In otherwords, is the default Contains() method just scan each item or does it use a better search algorithm.
foreach (Record item in LargeCollection)
{
if (LookupCollection.Contains(item.Key))
{
// Do something
}
}
Note. The lookup list is already sorted.
In the most general case, consider
System.Collections.Generic.HashSetas your default “Contains” workhorse data structure, because it takes constant time to evaluateContains.The actual answer to “What is the fastest searchable collection” depends on your specific data size, ordered-ness, cost-of-hashing, and search frequency.