簡體   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