簡體   English   中英

如何檢查字符串數組包含特定的字符串?

[英]How to check Array of strings contains a particular string?

我正在使用.NET 2.0我有一個很大的字符串數組。 我想檢查數組中是否存在特定的字符串,我不確定,是否優化了以下代碼或者我需要對其進行更優化。 請指導。

string []test_arr= new string[]{"key1","key2","key3"};
Boolean testCondition = (new List<string>(test_arr)).Contains("key3");

我也想了解更多

  1. .NET泛型
  2. .NET屬性
  3. .NET思考

是否有任何好的參考或書籍,有人已經參考,然后幫助我!

string []test_arr= new string[]{"key1","key2","key3"};
bool testCondition = Array.Exists
(
    test_arr,
    delegate(string s) { return s == "key3";}
);

如果可能,您可以對數組進行排序(使用靜態Array.Sort方法),然后使用Array.BinarySearch

或者,您需要為字符串使用更優化的數據結構。

在.NET Framework 2.0版中,Array類實現System.Collections.Generic.IList,System.Collections.Generic.ICollection和System.Collections.Generic.IEnumerable通用接口。

因此,您可以執行以下操作:

string[] test_arr = new string[]{"key1","key2","key3"};
Boolean testCondition = ((IList<string>)test_arr).Contains("key3");

列表是O(n),SortedList是O(log n)

在您的示例中,最大的開銷可能是創建List,但這可能是演示的一部分。

從數組開始,以下內容可能會更快:

int x = Array.IndexOf<string>(test_arr, "key3");
bool testCondition = x >= 0;

但是如果你有選擇權,那么使用HashSet<string>來存儲它們會更有效率。 HashSet可以檢查O(1)中是否存在元素。

關於你的其他問題,他們已被問過SO,請使用搜索選項,例如“C#books”

abouot你的larga數組字符串:只要你使用一個數組就沒有優化的方法(你必須從第一個元素開始並經過每個元素直到你找到它 - 或者如果你不通過整個數組) - 這給出了你最糟糕的情況是O(n)(O表示法給出了一個程序需要完成某些事情的時間)。

由於您希望針對搜索進行優化,我建議您使用哈希表或樹(取決於數據集的大小)。 這將大大減少您需要檢查的時間

我的回答與Matt Howells非常相似。 但我建議使用StringComparison


Array.Exists<string>(stringsArray,
                delegate(string match)
                {
                    return match.Equals("key", StringComparison.InvariantCultureIgnoreCase)
                });

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM