我想知道.NET是否提供了通過列表或字典對象進行前綴搜索的任何標準功能。我遇到StringDictionary
,但無法弄清楚它是否可以爲我做到這一點。使用.NET StringDictionary通過列表/字典進行前綴搜索?
如果它可以做一個前綴搜索,它也可以做子字符串搜索或讓我使用像正則表達式一樣搜索嗎?
在此先感謝。
我想知道.NET是否提供了通過列表或字典對象進行前綴搜索的任何標準功能。我遇到StringDictionary
,但無法弄清楚它是否可以爲我做到這一點。使用.NET StringDictionary通過列表/字典進行前綴搜索?
如果它可以做一個前綴搜索,它也可以做子字符串搜索或讓我使用像正則表達式一樣搜索嗎?
在此先感謝。
StringDictionary
僅僅是一個哈希表,其中的鍵和值是string
s。這在仿製藥之前就存在了(所以Dictionary<string, string>
是不可能的)。
您需要的數據結構是trie。上有CodeProject實現:
或者,如果你是那種傢伙,滾你自己(見CLRS)。
我不相信StringDictionary支持前綴搜索,但是如果您使用的是SortedList<,>
,則可以對鍵的範圍進行二進制搜索,直到找到前綴之前和之後的第一個條目。
我認爲StringDictionary
是舊學校(前仿製藥)。您應該使用Dictionary(Of String, String)
,因爲它實現了IEnumerable(認爲LINQ)。一個極端的lame thing about StringDictionary是它不區分大小寫。
+1很好的回答!我不記得它的確切名稱 - 特里! – 2009-12-14 17:06:03