2012-02-20 91 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>如果订单是重要的。

相关问题