C# 在C中构造唯一对象列表的最佳方法#
我想知道在C#中,遵循一种模式还是另一种模式来构建唯一的对象列表会更快: 选择1C# 在C中构造唯一对象列表的最佳方法#,c#,performance,generic-list,C#,Performance,Generic List,我想知道在C#中,遵循一种模式还是另一种模式来构建唯一的对象列表会更快: 选择1 将所有项目添加到通用列表中 调用list.Distinct函数 选择2 迭代每个项目 检查列表中是否已存在该项,如果不存在,则添加该项 如果您担心查找独特项目的性能,请使用。此外,字典需要唯一的键,因此您永远不会有重复的键。您可以使用: HashSet类提供高性能的set操作。一套 是不包含重复元素的集合,并且 元素没有特定的顺序 您可以通过构造器提供定制。这是一个“我应该用鞋还是用砖把钉子钉进木头里”的问题
- 将所有项目添加到通用列表中
- 调用list.Distinct函数
- 迭代每个项目
- 检查列表中是否已存在该项,如果不存在,则添加该项
如果您需要列表格式的项目,您可以随时在集合上调用
ToList()
。谢谢,尽管它是来自MSDN的引用。HashSet
实际上不是列表,它不保留顺序,也不提供索引访问。(OP似乎也没有意识到区别。)@DavidMoles确实HashSet
不是列表。似乎OP根本不知道HashSet
,所以这就是为什么我提出它作为解决方案的原因。因此,我认为,我们可以假设单词“list”(在本例中)的意思是项目的集合。实际上,它是一个.aHashSet
实际上不是一个列表——它不保留顺序,也不提供索引访问。(OP似乎也没有意识到区别。)根据描述,他没有键值关系,因此他需要一个集合(比如HashSet
),而不是Map(C#中的一个实现是字典),事实上,我忘了HashSet。