我想要一个允许查询最近X分钟内有多少个项目的数据结构。一个项目可能只是一个简单的标识符或一个更复杂的数据结构,优选地,该项目的时间戳记将在该项目中,而不是存储在外部(作为散列或类似内容,不希望多个项目具有相同的时间戳)时间戳记)。
到目前为止,看来使用LINQ可以轻松过滤时间戳大于给定时间的项目并汇总计数。尽管我犹豫要在我的生产环境中使用.NET 3.5特定的东西。对于类似的数据结构还有其他建议吗?
我感兴趣的另一部分是老化旧数据,如果我只想查询少于6小时前的项目计数,那么我希望从我的数据结构中删除比该数据还旧的内容。是一个长期运行的程序。
最佳答案
一个简单的链表可用于此目的。
基本上,您将新项目添加到末尾,并从一开始就删除太旧的项目,这是一种廉价的数据结构。
示例代码:
list.push_end(new_data)
while list.head.age >= age_limit:
list.pop_head()
如果列表繁忙到足以一次切掉比一个大的块,那么我同意dmo,使用树结构或类似的东西可以在更高的层次上修剪。