实现具有最大项目数的List(Of)的最佳方式

时间:2011-11-14 09:41:57

标签: .net vb.net list

我正试图找出一种实现包含最大记录数的List(Of)的好方法。

e.g。

我有一个List(Of Int32) - 它使用新的Int32项目每2秒填充一次。

我想只保存最新的2000件物品。

如何使列表最多包含2000个项目,然后当尝试添加第2001个项目时,List会删除第2000个项目(导致当前总计为1999)。

事情是,我需要确保我只删除最旧的项目并在列表中添加新项目。

6 个答案:

答案 0 :(得分:3)

试试这个......

if(list.Count >= 2000)
    list.RemoveAt(0); 
list.Add(item);

答案 1 :(得分:2)

您需要一个队列结构。到达队列时添加元素。仅当大小>时才从队列中删除元素。 2000

答案 2 :(得分:2)

您可以使用例如循环列表(链接列表,第2000个项目指向第一个)。添加新元素会为当前指针添加“下一个元素”。

当您添加第2001个元素时,它将替换您创建的第一个元素,即最旧的元素。

然而,知道如何访问结构中的数据会很有趣。

答案 3 :(得分:2)

如果您想使用List(Of T)而不是其他集合类型,则可以重载Add() - 方法:

Public Class ListOf2000(Of T)
    Inherits List(Of T)

    Public Overloads Sub Add(item As T)
        MyBase.Add(item)
        If Me.Count = 2001 Then Me.RemoveAt(0)
    End Sub

End Class

答案 4 :(得分:0)

圆形数组,带有指向开始和结束的指针。如果您使用的是CPP,则可以使用dequeue

答案 5 :(得分:0)

使用队列。但它确实取决于您需要如何访问列表/队列中的那些。