使用自定义通用集合更快地使用对象而不是列表

时间:2010-04-25 23:50:38

标签: c# optimization collections

我正在迭代List<>以找到匹配的元素。问题是对象只有2个重要值NameLink(两个字符串),但还有其他一些我不想比较的值。

我正在考虑使用来自.NET 3.5的HashSet(这正是我正在寻找的 - 快速),但目标框架必须是2.0。这里有一个名为Power Collections的东西:http://powercollections.codeplex.com/,我应该使用它吗?

但也许还有别的办法?如果没有,你能给我一个合适的定制系列吗?

2 个答案:

答案 0 :(得分:3)

在.NET 2.0而不是HashSet<T>中,您可以使用Dictionary<K, V>

Dictionary使用哈希码执行密钥查找,因此它具有与HashSet类似的性能。至少有两种方法:

  • 创建一个包含Name和Link的自定义类或结构,并将其用作字典中的键,并将该对象作为值。
  • 将整个对象存储为键,并提供仅查看Name和Link成员的自定义相等比较器,并将该值设置为null。

第二种方法与使用HashSet的方式非常类似。

答案 1 :(得分:0)

这个怎么样:

自定义类/集合将包含对象列表和两个字典,一个用于名称,另一个用于链接。它们都将具有一个int值,它将是对象的索引。我认为在这种情况下我只需要检查名称字典的int值是否等于链接字典int。

这是一个好方法吗?