从.NET中的HashSet中获取所有元素的有效方法

时间:2013-04-15 05:37:11

标签: c# asp.net .net hashset

说,我有一个带元素的HashSet:

HashSet<int> hsData = new HashSet<int>();

并且在某些时候我需要处理这些元素(逐个)。我当然可以将它转换为数组并以这种方式使用它:

int[] arr = hsData.ToArray();

但我不确定这种转换效率如何?

我看到人们建议在HashSet本身使用foreach,但由于我的代码架构,我无法使用它。我需要能够起作用的东西:

  

这是最后一个元素吗?如果没有,那么得到它并前进到下一个   元件。

2 个答案:

答案 0 :(得分:1)

正如您所说,转换为阵列可能会有一些性能上的缺陷。幕后的foreach会在HashSet中获得一个枚举器,然后通过它。

HashSet<T>还实现了IEnumerable<T>,可用于以更有效的方式枚举集合。在IEnumerable上查看here以获取参考。

答案 1 :(得分:0)

如果你愿意,你可以使用foreach。只需保留给定列表中所有元素的运行计数器,在进行迭代时递减,并对计数器进行比较。

另一方面,将它变成阵列是一件大事吗?这个操作是否发生了1000次?