[英]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.