在C#中构建唯一对象列表的最佳方法

时间:2012-12-07 17:09:26

标签: c# performance generic-list

我想知道在C#中构建一个唯一的对象列表是否会更快地遵循一种或另一种模式:

选项1

  • 将所有项目添加到通用列表中
  • 调用list.Distinct函数

选项2

  • 迭代每个项目
  • 检查项目是否已存在于列表中,如果不是,则添加

3 个答案:

答案 0 :(得分:17)

您可以使用HashSet<T>

  

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

您可以通过构造函数提供自定义IEqualityComparer<T>

答案 1 :(得分:3)

这是其中之一“我应该用鞋子还是用砖来敲钉子”。您应该为作业使用适当的数据结构,根据您“构建唯一对象列表”的要求,HashSet<T>类满足。

如果您需要列表格式的项目,您可以随时在集合上调用ToList()

答案 2 :(得分:0)

如果您担心查找唯一项目的效果,请使用Dictionary<TKey, TVale>。此外,字典需要唯一的键,因此您永远不会有重复。