我從第三方庫回來一個「字符串[]」。我想做一個包含它。做這件事最有效的方法是什麼?最快的方法做一個包含字符串[]
4
A
回答
9
Array.IndexOf:
bool contains = Array.IndexOf(arr, value) >= 0;
或者只是使用LINQ:
bool contains = arr.Contains(value);
LINQ應該是 「不夠快」 對於大多數的目的。
1
如果絕對速度值得關注,我相當肯定for
環路更快。即,
for (int i = 0; i < arr.Length; ++i)
if (arr[i] == value) return true;
return false;
2
除非你知道String數組由一個特定的順序,你可以做最有效的事排序是線性的算法(即,直到找到一個匹配或數組的結尾每個字符串比較數組中。
如果數組排序的二進制搜索的速度要快得多。
另一種方式來優化算法(雖然複雜不減少)是向量化的字符串比較。
7
如果你只檢查一次tim e,使用Array.IndexOf
或像Marc提出的LINQ Contains方法。如果您多次檢查,首先將字符串數組轉換爲HashSet<string>
可能會更快。
1
如果您搜索一次或兩次,請使用線性搜索或IndexOf。
如果您搜索了幾次,請將字符串放入HashSet中。
如果您以時間關鍵的方式搜索大量時間,請使用HashSet並自行管理其桶數。
1
可以使用IEnumerable.Foreach自定義擴展
public static class CollectionExtensions
{
public static void ForEach<T>(this IEnumerable list, Action<T> action)
{
foreach (T item in list)
{
action(item);
}
}
}
class Program
{
static void Main(string[] args)
{
String[] list = new String[] { "Word1", "Word2", "Word3" };
list.ForEach<String>(p => Console.WriteLine(p));
list.ForEach(delegate(String p) { Console.WriteLine(p); });
}
}
希望這有助於公司。
相關問題
- 1. VB.net最快的方法來檢查一個字符串是否包含許多字符串中的一個
- 2. Java - 檢查一個字符串是否包含double值的最快方法
- 3. 最快的方法來檢查一個文件是否包含字符串列表中的任何字符串
- 4. 檢查字符串的最快方法是在JavaScript中包含另一個子字符串?
- 5. 最佳方式,如果一個字符串包含另一個字符串
- 6. 檢查一個字符串是否包含Python 3中重複字符的最快方法是什麼?
- 7. 最快的方法來做一個FFT
- 8. 最快的方法 - 字符串組件
- 9. 搜索字符串的最快方法?
- 10. Matlab:在最後一個字符處分割字符串的最快方法
- 11. 在另一個字符串中查找字符串子集的最快方法?
- 12. 從字符串數組中創建一個字符串。最快的方法?
- 13. 解析json字符串的最快方法(不含jquery)
- 14. 決定字符串是否只包含允許值的最快方法?
- 15. 字符串包含jsf中的方法
- 16. 如何做一個包含一個字符串數組?
- 17. 創建包含另一個字符串的多個副本的字符串的最佳方法
- 18. 最快的方法來確定是否兩個字符串由一個字符
- 19. 最快的方法,使一個字典一個逗號分隔的字符串
- 20. 找到字符串數組中字符串的最快方法
- 21. 尋找快速的方法來檢查一個字符串是否包含字典中的一個字Java
- 22. 實現一個模擬字符串的公式包含方法
- 23. 使用熊貓字符串的方法「包含」在包含字符串
- 24. 匹配一個字符串,但不包含它包含另一個字符串
- 25. 最快的方法,以消除第一個字符的字符串
- 26. 最快的方式,如果字符串的一組總是在不斷變化包含字符串
- 27. 字符串包含方法C#WPF
- 28. 將字符串與R中另一個數據框中包含的值進行匹配的最快方法
- 29. 一個字符串包含另一個字符串
- 30. 檢查字符串是否包含多個單詞的最快/最簡單的方法
HashSet的好處; +1 ;-p – 2009-01-03 15:56:15