我正试图找出一种实现包含最大记录数的List(Of)的好方法。
e.g。
我有一个List(Of Int32) - 它使用新的Int32项目每2秒填充一次。
我想只保存最新的2000件物品。
如何使列表最多包含2000个项目,然后当尝试添加第2001个项目时,List会删除第2000个项目(导致当前总计为1999)。
事情是,我需要确保我只删除最旧的项目并在列表中添加新项目。
本
答案 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)
使用队列。但它确实取决于您需要如何访问列表/队列中的那些。