查找列表中项目的最快方法?

时间:2010-01-16 00:24:42

标签: c# visual-studio-2008 search .net-2.0 lookup

我有一个未排序的字符串列表。我可以将这些项放在数组,List,SortedList等等。

我需要找到在此列表中查找字符串的最快方法。我最好将列表转储到数组中,对其进行排序,然后实现二进制搜索?或者框架是否提供了这样做的方法?

由于

P.S。使用VS2008对抗.NET 2.0

3 个答案:

答案 0 :(得分:22)

如果你的目标只是让它快速找到集合中的字符串,请将它们放入HashSet

HashSet.Contains是一个O(1)方法,默认情况下字符串有一个很好的哈希算法,因此很难做出比这更快的例程。


编辑:

由于您使用的是.NET 2,我只需执行Dictionary<string,string>并使用相同的字符串作为键和值。 Dictinoary<TKey,TValue>.Contains也是O(1),并且比您尝试的任何基于列表的搜索快得多。

答案 1 :(得分:2)

如果您只需要找到一个对象,一次,只需从头开始并查看每个对象,直到找到它为止。如果您必须针对同一列表多次重复此查找操作,要查找不同的项目,然后对其进行排序以保留已排序的列表并执行二进制搜索...

答案 2 :(得分:-1)

我不确定这对你是否有用,但这是一种相当简单的方法,但不确定它的确切“速度”。

List<string> collection = new List<string>();

collection.Sort();

foreach(string value in collection)
{
   if(value == "stringToLookFor")
   {
       return value;
   }
{