0

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

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

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

int[] arr = hsData.ToArray();

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

我看到人们建议foreach在 HashSet 本身上使用,但由于我的代码架构,我不能使用它。我需要一些可以这样工作的东西:

它是最后一个元素吗?如果不是,则获取它并前进到下一个元素。

4

3 回答 3

2

正如您所说,转换为数组可能会有一些性能缺陷。foreach在幕后做的是在其中获取一个枚举器并HashSet运行它。

HashSet<T>还实现IEnumerable<T>了 ,可用于以更有效的方式枚举集合。在此处查找有关IEnumerable.

于 2013-04-15T05:47:27.553 回答
0

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

另一方面,把它变成一个数组有什么大不了的吗?此操作是否发生了 1000 次?

于 2013-04-15T05:43:21.713 回答
0

ToArray (尚)不存在,但您可以使用CopyTo

于 2021-11-14T09:04:49.527 回答