道歉,如果已经在其他地方问过,但我找不到它。
我想在.NET中存储一组字符串,以便可以轻松快速地查找它们以查找密钥是否已存储。
我可以使用List< string>并且每次我需要搜索时列举列表,但显然线性搜索效率很低。
所以我的下一个想法是使用Dictionary< string,object>并且每次查询,这应该有希望导致一些很酷的字符串哈希和更快的搜索时间。但是,我实际上并没有将任何东西存储在字典的“对象”部分中,因此看起来似乎效率低下。
有没有更好的方法呢?
答案 0 :(得分:10)
您正在寻找HashSet<string>
,它提供与字典相同的O(1)性能,但没有那些讨厌的值。
答案 1 :(得分:2)
HashSet<string>
无序集或
如果订单是重要的,则SortedSet<string>
。
答案 2 :(得分:0)
如果您的词典对象被多个线程使用,则ConcurrentDictionary(Of TKey,TValue)是更好的选择。