【发布时间】:2015-03-02 16:48:40
【问题描述】:
我需要一个 C# 类来存储 不超过最后 N 个项目,方法如下:
Add(T item) {
if (mylist.Count >= N)
remove the first(oldest) item;
add a new item to the tail;
}
并且具有在指定索引处获取项目的属性。
所以可能正确的方法是让我的类基于以下类之一:List、Queue、ConcurrentQueue、Dequeue(可能有所不同?)。当然,一个类应该为头部和尾部提供相等的访问时间。
问题是,什么类最适合我的目的?
【问题讨论】:
-
对头部和尾部的访问时间相等。听起来像是常规列表的子类
-
List<T>是否为其头部和尾部提供相同的访问时间? -
这取决于您要存储的元素数量。 Here 是一个比较。对于 smaller n 或进行大量 lookups List
就可以了。对于大 n 其他人可能会更好.. -
是的,这确实是一个有趣的参考,但我仍然看不到我需要什么。而
List不存储指向其尾部的链接,因此效率为 o(n)。