我想要一个用于存储两种类型的集合:string
和DateTime
.
string
应该是我的收藏的关键,是DateTime
它插入收藏的时间。我想以某种FIFO
方式从集合中删除项目。
集合应该拒绝重复的键并且可以查询,DateTime
因此如果现在想要比给定日期更旧的项目数,它可以回答。
我想要一个用于存储两种类型的集合:string
和DateTime
.
string
应该是我的收藏的关键,是DateTime
它插入收藏的时间。我想以某种FIFO
方式从集合中删除项目。
集合应该拒绝重复的键并且可以查询,DateTime
因此如果现在想要比给定日期更旧的项目数,它可以回答。
没有单一的内置 C# 数据类型可以最大效率地完成所有这些事情,主要是因为您指出了您必须查找的两件事。
话虽如此,aDictionary<string, DateTime>
将是最简单的解决方案,它为您提供所需的所有功能,基本上是开箱即用的。但是,该集合将为 DateTime 查找提供 O(n) 复杂性,并且比 O(1) 更糟糕的删除时间。这可能没什么大不了的,但您没有描述您的性能要求、数据集的预期大小或最常发生的访问类型。
为了改进“早于日期时间”的查找性能和 FIFO 删除,您还可以保留第二个索引,例如 SortedList。更多的内存使用和稍慢的整体插入时间,但 DateTime 和删除查询会更快。对于“早于日期时间”,您可以使用SortedList.Keys 的二进制搜索。
听起来System.Collections.Generic.Dictionary<string, DateTime>
应该做你的伎俩。它具有根据需要处理集合的方法。