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

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

发布时间:2020-12-15 17:24:36 所属栏目:百科 来源:网络整理
导读:该场景是事件的时间轴,我希望能够查询特定日期范围内的所有项目. 我正在寻找.NET中的数据结构(最高v4.0),它将项目存储为已排序且唯一(例如,通过使用比较器或唯一键).它应该支持在不超过对数复杂度的情况下添加/删除,并且还应该以这种复杂性执行二进制搜索. S
该场景是事件的时间轴,我希望能够查询特定日期范围内的所有项目.

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

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

我遗漏了两件事:

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

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

谢谢.

解决方法

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

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

(编辑:李大同)

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

    推荐文章
      热点阅读