在C#中找到字符串的最快方法?

时间:2010-07-21 16:31:25

标签: c# performance string

在C#中实现类似内容的最快方法是什么:

  private List<string> _myMatches = new List<string>(){"one","two","three"};
  private bool Exists(string foo) {
      return _myMatches.Contains(foo);
  }

请注意,这只是一个例子。我只需要对源自字符串的某些值执行低级别过滤。我可以实习他们,但仍然需要支持一个或多个字符串的比较。含义,字符串到字符串比较(1个过滤器),或者字符串列表中存在字符串(多个过滤器)。

3 个答案:

答案 0 :(得分:18)

您可以使用HashSet<T>来加快速度,尤其是如果您要添加更多元素:

private HashSet<string> _myMatches = new HashSet<string>() { "one", "two", "three" };

private bool Exists(string foo)
{
    return _myMatches.Contains(foo);
}

这将超过List<T>,因为HashSet<T>.Contains是O(1)操作。

List<T>的包含方法另一方面是O(N)。它将在每次通话时搜索整个列表(直到找到匹配项)。随着更多元素的添加,这将变慢。

答案 1 :(得分:0)

哈希表是您快速查找字符串的朋友。

Working with HashTable in C# 2.0

查看好的教程

答案 2 :(得分:0)

您将不得不进行个人资料。你的意思是最快的查找(即,初始化时间是否计数)?

@Elf King已经提到过哈希表,我将指向你(具体为HashSet<T>