对对象使用自定义通用集合比列表更快

发布于 2024-08-30 23:00:59 字数 395 浏览 2 评论 0原文

我正在迭代 List 来查找匹配的元素。问题是该对象只有 2 个有效值,NameLink (都是字符串),但还有一些我不想比较的其他值。

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

但也许还有其他方法吗?如果没有,您能给我推荐一个合适的定制系列吗?

I'm iterating through a List<> to find a matching element. The problem is that object has only 2 significant values, Name and Link (both strings), but has some other values which I don't want to compare.

I'm thinking about using something like HashSet (which is exactly what I'm searching for -- fast) from .NET 3.5 but target framework has to be 2.0. There is something called Power Collections here: http://powercollections.codeplex.com/, should I use that?

But maybe there is other way? If not, can you suggest me a suitable custom collection?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

不甘平庸 2024-09-06 23:00:59

在 .NET 2.0 中,您可以使用 Dictionary 代替 HashSet

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

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

第二种方法与使用 HashSet(如果可用)的方式非常相似。

In .NET 2.0 instead of a HashSet<T> you can use a Dictionary<K, V>.

Dictionary uses the hash code to perform key lookups so it has similar performace to the HashSet. There are at least two approaches:

  • Create a custom class or struct containing the Name and Link and use that as the key in the dictionary, and put the object as the value.
  • Store the entire object as the key and provide a custom equality comparer that only looks at the Name and Link member, and set the value to null.

The second method is very similar to how you would use a HashSet if it were available.

千寻… 2024-09-06 23:00:59

怎么样:

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

这是一个好方法吗?

How about this:

Custom class/collection wich will held List of objects and two dictionaries, one for the name and one for the link. Both of them will have a int value wich will be the index of object. I think that in that case I will only need to check if there is such int value of name dictionary that equals link dictionary int.

Is this a good approach?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文