2012-02-20 52 views
3

道歉,如果這已經要求其他地方的存在與否的最好方法,但我找不到它。是字典來記錄一個關鍵

我想了一組字符串存儲在.NET中,在諸如方式,他們可以很容易地和迅速地擡起頭,發現如果密鑰存儲與否。

我可以只使用一個列表<字符串>每次我需要搜索時間列舉名單,但很明顯的是線性搜索是非常低效的。

所以我的下一個想法是使用一個字典<字符串,對象>和每次查詢,這應該有望導致一些很酷的字符串散列和更快的搜索時間。但是,實際上我並沒有在字典的「對象」部分存儲任何內容,因此似乎可能會導致效率低下。

有沒有更好的方法來做到這一點?

+0

如果它正在哈希你想... – bzlm 2012-02-20 15:28:16

+0

列表有一個Contains方法,所以你不需要枚舉它來找到一個匹配 – kaj 2012-02-20 15:29:19

+0

@KAJ猜猜'Contains'在內部做什麼。 ;-) – 2012-02-20 15:31:33

回答

10

你正在尋找一個HashSet<string>,它提供了相同的O(1)字典的表現,但沒有那些討厭的值。

0

如果你的字典對象正在使用多個線程,ConcurrentDictionary(中TKEY的,TValue)是一個更好的選擇。

2

HashSet<string> for unordered sets or
SortedSet<string>如果訂單是重要的。