我在思考在C#中构建唯一对象列表是否更快地遵循一种模式:
选项1
- 将所有项目添加到通用列表中
- 调用list.Distinct函数
选项2
- 迭代每个项目
- 检查项目是否已经存在于列表中,如果不存在,则添加
我在思考在C#中构建唯一对象列表是否更快地遵循一种模式:
选项1
选项2
HashSet<T>
:
您可以通过构造函数提供自定义的HashSet 类提供高性能的集合操作。一个集合是一个不包含重复元素且元素没有特定顺序的集合。
IEqualityComparer<T>
。HashSet<T>
类可以满足需求。ToList()
方法。HashSet<T>
实际上不是一个列表——它不保留顺序,也不提供索引访问。(似乎 OP 也没有意识到这个区别。) - David MolesDictionary<TKey, TVale>
。此外,字典需要唯一的键,因此您永远不会有重复项。HashSet
),而不是Map(C#中的一种实现是Dictionary
)。 - Servy
HashSet<T>
实际上不是一个列表——它不保留顺序,也不提供索引访问。(似乎 OP 也没有意识到这个区别。) - David MolesHashSet<T>
不是List<T>
。看起来OP只是不知道HashSet
,所以我提出它作为解决方案。因此,我认为,在这种情况下,“列表”一词意味着某些东西是项目的集合。 - Zbigniew