快速字符串查找的最佳集合

Jon*_*ood 25 .net c# collections

我需要一个字符串列表和一种快速确定字符串是否包含在该列表中的方法.

为了提高查找速度,我认为SortedListDictionary; 但是,KeyValuePair当我需要的只是一个时,两者都可以使用string.

我知道我可以使用a KeyValuePair而忽略该Value部分.但我更喜欢高效,我只是想知道是否有更适合我要求的系列.

Jon*_*eet 33

如果您使用的是.NET 3.5或更高版本,请使用HashSet<String>.

如果失败了,a Dictionary<string, byte>(或者你想要TValue类型参数的任何类型)会比SortedList你有很多条目更快- 后者将使用二进制搜索,所以它将是O(log n)查找,而不是O(1).


Bro*_*ass 10

如果您只想知道字符串是否在set use中 HashSet<string>


Hen*_*man 5

这听起来像是一份工作

 var keys = new HashSet<string>();
Run Code Online (Sandbox Code Playgroud)

每个MSDN:包含函数具有O(1)复杂度.

但是你应该知道,添加时它不会给重复项带来错误.

  • 更确切地说,Add方法不会抛出异常,但如果添加了密钥则返回true,如果已经存在则返回false. (3认同)