繁体   English   中英

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

[英]fastest way to find string in C#?

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

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

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

你可以通过使用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>的Contains方法是O(N)。 它将在每次通话时搜索整个列表(直到找到匹配项)。 随着更多元素的添加,这将变得更慢。

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

看看在C#2.0中使用HashTable的好教程

你将不得不描述。 你的意思是最快的查找(即初始化时间计数)?

@Elf King已经提到过Hash Tables,我将指向你(特别是HashSet<T>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM