微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

c# – .NET中的数据结构,用于存储按排序唯一且可按范围查询的项目(并且不是SortedSet)

该场景是事件的时间轴,我希望能够查询特定日期范围内的所有项目.

我正在寻找.NET中的数据结构(最高v4.0),它将项目存储为已排序且唯一(例如,通过使用比较器或唯一键).它应该支持在不超过对数复杂度的情况下添加/删除,并且还应该以这种复杂性执行二进制搜索.

System.Collections.Generic.sortedSet看起来像我想要的,但它的GetViewBetween()方法返回一个包含的项目列表,作为SortedSet.

我遗漏了两件事:

>调用ToList()或枚举SortedSet太昂贵了,因为列表很长.我需要方法返回List< T>,而不是SortedSet< T>.
>根据我的选择调用包含/独家日期范围 – 不可能,我也需要它.

如果你知道一个包含这种数据结构的好库,经过测试和熟悉,我肯定想尝试一下.

谢谢.

解决方法

经过一些阅读后,看起来SortedList或SortedDictionary就是您所需要的. SortedList似乎使用更少的内存,并且在技术上是二叉树,其中SortedDictionary使用未排序的数据更快.除此之外,他们是非常亲近的堂兄弟.

这是关于差异的一个很好的问题/答案:SortedList vs. SortedDictionary vs. Sort()

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐