在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","three" };

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

这将击败List< T>自HashSet<T>.Contains起是O(1)操作.

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

相关文章

项目中经常遇到CSV文件的读写需求,其中的难点主要是CSV文件...
简介 本文的初衷是希望帮助那些有其它平台视觉算法开发经验的...
这篇文章主要简单记录一下C#项目的dll文件管理方法,以便后期...
在C#中的使用JSON序列化及反序列化时,推荐使用Json.NET——...
事件总线是对发布-订阅模式的一种实现,是一种集中式事件处理...
通用翻译API的HTTPS 地址为https://fanyi-api.baidu.com/api...