加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-15 18:02:45 所属栏目:百科 来源:网络整理
导读:如何在 SortedSet 中以指定的索引(位置)访问该项目? 与 SortedList 不同,SortedSet不提供 Item property! (与SortedList不同,SortedSet强制其每个成员都是唯一的,也就是说,一个SortedSet保证不包含重复!) 解决方法 那是因为一个 SortedSet has the semant
如何在 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>并覆盖适当的方法来获取所需的语义.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读