使用整数集合检查存在性能最高的方法是什么?

Jon*_*Jon 0 .net c# generics types unique

我有一个很大的整数列表,发送到我的webservice.我们的业务规则规定这些值必须是唯一的.什么是最有效的方法来确定是否有任何重复?我不需要知道值,我只需要知道其中两个值是否相等.

起初我正在考虑使用整数通用列表和list.Exists()方法,但这是O(n);

然后我考虑使用Dictionary和ContainsKey方法.但是,我只需要键,我不需要值.而且我认为这也是线性搜索.

是否有更好的数据类型可用于查找列表中的唯一性?还是我坚持线性搜索?

And*_*are 15

使用HashSet<T>:

HashSet类提供高性能集合操作.集合是一个不包含重复元素的集合,其元素没有特定的顺序

HashSet<T>甚至暴露了一个接受一个的构造函数IEnumerable<T>.通过将您传递List<T>HashSet<T>'s构造函数,您将最终得到一个新的引用,该引用HashSet<T>将包含原始项目中不同的项目序列List<T>.

  • 当inputList.Count!= hashSet.Count,"休斯顿,我们有重复!" (4认同)