Fastest way to find an item in a list?

AngryHacker picture AngryHacker · Jan 16, 2010 · Viewed 20.5k times · Source

I have an unsorted list of strings. I can place these items in an array, List, SortedList, whatever.

I need to find the fastest way of looking up a string in this list. Am I better off dumping the list into an array, sorting it, then implementing binary search? Or does the framework provide a way to do this?

Thanks

P.S. Using VS2008 against .NET 2.0

Answer

Reed Copsey picture Reed Copsey · Jan 16, 2010

If your goal is just to make it very fast to find the strings in a collection, put them into a HashSet.

HashSet.Contains is an O(1) method, and strings have a good hash algorithm by default, so it will be difficult to make a faster routine than this.


Edit:

Since you're using .NET 2, I would just do Dictionary<string,string> and use the same string for key and value. Dictinoary<TKey,TValue>.Contains is also O(1), and will be much faster than any list-based searching you attempt.