在.net中从HashSet中获取所有元素的有效方法
本文关键字:元素 有效 方法 获取 net 中从 HashSet | 更新日期: 2023-09-27 18:09:05
假设,我有一个包含元素的HashSet:
HashSet<int> hsData = new HashSet<int>();
,在某些时候我需要处理这些元素(一个接一个)。当然,我可以把它转换成一个数组,然后这样操作:
int[] arr = hsData.ToArray();
但我不确定这种转换的效率如何?
我看到人们建议在HashSet本身上使用foreach
,但由于我的代码的体系结构,我不能使用它。我需要一些可以这样工作的东西:
是最后一个元素吗?如果没有,那就得到它,然后进入下一个
元素。
正如您所说,转换为数组可能会有一些性能缺陷。foreach
在后台所做的是在HashSet
中获得一个枚举器并遍历它。
HashSet<T>
还实现了IEnumerable<T>
,可以用它以一种更有效的方式枚举集合。参考IEnumerable
如果您愿意,可以使用foreach still。只需保持给定列表中所有元素的运行计数器,在进行迭代时进行递减,并与计数器进行比较。
另一方面,把它变成一个数组有什么大不了的吗?这个操作发生了上千次了吗?ToArray还不存在,但是您可以使用CopyTo