【发布时间】:2014-04-23 11:42:40
【问题描述】:
我经常想优化 .Contains 在集合上的性能。
我总是通过创建Dictionary<TKey,bool> 然后在字典上使用 .ContainsKey 来提供 O(1) .Contains 性能来做到这一点。
然而,我总是不喜欢字典中的值。
有没有比字典更好的数据结构来支持这种我不关心实际值,只关心键的存在的情况?
【问题讨论】:
-
你的列表排序了吗?如果没有,是否在检查选项之前对列表进行一次排序?
-
@Szymon 我可以对其进行排序,但它仍然比使用字典要慢。我认为二进制搜索是 O(log(n)) 大于 O(1) 用于哈希表查找
-
正如注释 O(1) 并不意味着它一定会更快,只是对每个项目的访问是恒定的。
-
@kevin 你是绝对正确的(例如小集合)但是对于我的应用程序我通常处理大集合
-
重复:stackoverflow.com/questions/20482848/… 你甚至可以在询问之前搜索谷歌
标签: c#