HashSet.ElementAt O(1)实现吗?如果不是,它是什么?

最佳答案

不,是O(n)。所有IEnumerable<T>的扩展方法都是O(n)(因为IEnumerable<T>唯一可以做的就是...枚举)。尽管如注释中所指出,它们确实尝试将其强制转换为可以更快地实现该操作的接口(interface)(例如,ElementAt将尝试强制转换为IList<T>以便实现O(1)操作)。对于HashSet<T>仍然没有实现IList<T>的情况,这没有帮助。

对于HashSet<T>而言,“ElementAt”的概念实际上并没有任何意义,因为没有这样的“排序”。基本上,您只是得到一个随机元素。

关于.net - HashSet是否为Enumerable.ElementAt <TSource> O(1)?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3279022/

10-11 17:24