排序的List <string>是否会执行包含更快的</string>

时间:2011-08-30 05:58:59

标签: .net sorting

如果我在已排序的简单字符串标签列表上执行Contains()(而不是复杂的句子),它会比随机排序的标签更快地运行吗?如果没有,那么什么是更好的数据结构。我不一定要先在字典中哈希(出于性能原因),但我愿意接受建议

1 个答案:

答案 0 :(得分:7)

如果你只是排序List<string>,那就没有了。您可以使用List<T>.BinarySearch,但Contains不会为您执行此操作,因为它并不真正“知道”您的列表已排序。散列它们正好 性能虽然 - HashSet<T>可能是您最好的选择 - 假设您没有遇到哈希冲突,它将具有O(1)Contains性能

您可以在.NET 4中使用SortedSet<T>这基本上是一个排序列表 - 您将获得O(log n)性能,但这不需要哈希计算,可以 如果您只使用.NET 2,

SortedList<,>SortedDictionary<,>也可用,但理想情况下,如果您不需要键/值映射,则应使用集合关心订单。