c# – 在“SortedSet”中以指定的索引访问项目

前端之家收集整理的这篇文章主要介绍了c# – 在“SortedSet”中以指定的索引访问项目前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
如何在 SortedSet中以指定的索引(位置)访问该项目?

SortedList不同,SortedSet不提供Item property

(与SortedList不同,SortedSet强制其每个成员都是唯一的,也就是说,一个SortedSet保证不包含重复!)

解决方法

那是因为一个 SortedSet has the semantics of a set并不是一个List-like的结构.因此,它不实现IList(它使您能够通过Item属性通过索引来处理项目).

如@DavidRR所述,您可以使用Linq扩展方法Enumerable.ElementAt().但是,由于SortedSet的后备存储是红黑树 – 高度平衡的二叉树,通过ElementAt()通过索引访问元素涉及到树步行 – O(N),最差情况和O(N / 2)平均,以达到所需的项目.与遍历单链列表访问第N个项目完全相同.

所以对于大套,性能可能很差.

如果你想要的是一个独特的集合,提供类似于数组的语义,为什么不滚动你自己的IList< T>将执行唯一性的实现,就像SorteSet< T>是(忽略了在colleciton中已经存在的元素的添加).使用列表< T>作为后备店.按照排序顺序进行维护,以便您可以使用二进制搜索来确定要添加的元素是否已经存在.或者,简单地是子类型List< T>并覆盖适当的方法获取所需的语义.

原文链接:https://www.f2er.com/csharp/97355.html

猜你在找的C#相关文章