说,我有一个带元素的HashSet:
HashSet<int> hsData = new HashSet<int>();
并且在某些时候我需要处理这些元素(逐个)。我当然可以将它转换为数组并以这种方式使用它:
int[] arr = hsData.ToArray();
但我不确定这种转换效率如何?
我看到人们建议在HashSet本身使用foreach
,但由于我的代码架构,我无法使用它。我需要能够起作用的东西:
这是最后一个元素吗?如果没有,那么得到它并前进到下一个 元件。
答案 0 :(得分:1)
正如您所说,转换为阵列可能会有一些性能上的缺陷。幕后的foreach
会在HashSet
中获得一个枚举器,然后通过它。
HashSet<T>
还实现了IEnumerable<T>
,可用于以更有效的方式枚举集合。在IEnumerable
上查看here以获取参考。
答案 1 :(得分:0)
如果你愿意,你可以使用foreach。只需保留给定列表中所有元素的运行计数器,在进行迭代时递减,并对计数器进行比较。
另一方面,将它变成阵列是一件大事吗?这个操作是否发生了1000次?