5

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

选项1

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

选项 2

  • 遍历每个项目
  • 检查该项目是否已存在于列表中,如果不存在则添加它
4

3 回答 3

18

您可以使用HashSet<T>

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

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

于 2012-12-07T17:13:07.173 回答
3

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

如果您需要列表格式的项目,您可以随时致电ToList()集合。

于 2012-12-07T17:16:52.250 回答
0

如果您担心查找独特项目的性能,请使用Dictionary<TKey, TVale>. 此外,字典需要唯一的键,所以你永远不会有重复。

于 2012-12-07T17:11:46.027 回答