我有一个未排序的字符串列表。我可以将这些项放在数组,List,SortedList等等。
我需要找到在此列表中查找字符串的最快方法。我最好将列表转储到数组中,对其进行排序,然后实现二进制搜索?或者框架是否提供了这样做的方法?
由于
P.S。使用VS2008对抗.NET 2.0
答案 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;
}
{