标签: c#
我经常想要优化集合.Contains的性能。
.Contains
我一直这样做是通过创建Dictionary<TKey,bool>然后在字典上使用.ContainsKey来提供O(1).Contains性能。
Dictionary<TKey,bool>
然而,总是让我感到烦恼的是我实际上并不关心字典中的价值。
是否有比字典更好的数据结构来支持这种情况,我不关心实际值,只关键是否存在?
答案 0 :(得分:11)
HashSet有一个方法Contains,它是值的O(1)搜索。这应该足够了(假设你的TKey正确实现GetHashCode):)
HashSet
Contains
TKey
GetHashCode