gpt4 book ai didi

c# - 访问 'SortedSet' 中指定索引处的项目

转载 作者:可可西里 更新时间:2023-11-01 03:00:56 25 4
gpt4 key购买 nike

如何访问 SortedSet 中指定索引(位置)的项目?

不同于SortedList , SortedSet 不提供 Item property .

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

最佳答案

那是因为 SortedSet has the semantics of a set并且不是 List -样构造。因此,它没有实现 IList (这使您能够通过 Item 属性按索引寻址项目)。

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

所以...对于大型集合,性能可能很差。

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

关于c# - 访问 'SortedSet' 中指定索引处的项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20691753/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com