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()

点赞