我需要的是一个集合,我可以指定最大元素数量。如果我尝试插入元素并且集合已满。删除了集合中的第一个元素,因此它不会溢出。
.net中是否有这样的对象,还是我必须自己制作?
答案 0 :(得分:3)
您可以扩展Queue课程。
例如:
public class MaxQueue : Queue
{
private int maxItems;
public MaxQueue(int maxItems)
{
this.maxItems = maxItems;
}
public override void Enqueue(object obj)
{
if(Count == maxItems)
{
Dequeue();
}
base.Enqueue(obj);
}
}
(这个例子很天真。它不是线程安全的,它不会检查maxItems是否至少为1.它基于队列,所以你可以安全地知道你将第一个项目加入队列中去了)< / p>
答案 1 :(得分:1)
.NET中没有提供circular/cyclic buffer实现的现有集合。你必须自己滚动它。
另请参阅此处的相关问题:How would you code an efficient Circular Buffer in Java or C#