自动删除项目以避免溢出的集合

时间:2010-03-07 11:00:02

标签: .net collections

我需要的是一个集合,我可以指定最大元素数量。如果我尝试插入元素并且集合已满。删除了集合中的第一个元素,因此它不会溢出。

.net中是否有这样的对象,还是我必须自己制作?

2 个答案:

答案 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#